一、安装 Nexus Maven 私服仓库 

[root@localhost lib]# pwd
/usr/lib
[root@localhost lib]# tar zxvf nexus-3.28.1-01-unix.tar.gz

解压出来的结果 
drwxr-xr-x.  9 root root      4096 9月  14 07:50 nexus-3.28.1-01

进入bin 目录之后 执行  ./nexus start 

然后在浏览器上输入 http://192.168.0.74:8081/ 就可以看到nexus 已经启动了 

登录默认账户/密码  admin/admin123 

二、创建仓库并使用依赖 

1. 点击齿轮,就会看到已经创建好的仓库列表,我们需要创建自己的仓库,点击 Create repository

gradle引入maven仓库依赖 gradle上传maven仓库_gradle引入maven仓库依赖

2. 选择 mavne hosted

gradle引入maven仓库依赖 gradle上传maven仓库_android_02

3.  Name 可以任意,我们这里写 imooc-snapshot, Version policy 我们选择 Snapshot 

gradle引入maven仓库依赖 gradle上传maven仓库_maven_03

4. 点击Create repository, 我们就可以在仓库列表上发现我们创建好的仓库

gradle引入maven仓库依赖 gradle上传maven仓库_ooc_04

5.  点击 copy 按钮,就可以获取仓库的地址

gradle引入maven仓库依赖 gradle上传maven仓库_maven_05

6. 基于同样的步骤,我们创建好 imooc-release 仓库

gradle引入maven仓库依赖 gradle上传maven仓库_gradle引入maven仓库依赖_06

7. nexus 还有其他命令可以学习,这里看下

[root@localhost bin]# ./nexus -h
WARNING: ************************************************************
WARNING: Detected execution as "root" user.  This is NOT recommended!
WARNING: ************************************************************
Usage: ./nexus {start|stop|run|run-redirect|status|restart|force-reload}

[root@localhost bin]# ./nexus status
WARNING: ************************************************************
WARNING: Detected execution as "root" user.  This is NOT recommended!
WARNING: ************************************************************
nexus is running.
[root@localhost bin]#

8. 我们现在已经创建好 imooc-snapshot 和 imooc-release 仓库,准备开始创建Android Library。

9. 创建 名为 lib_music 的 Android Library,并编写相关代码

package com.luckyboy.music;

public interface IPlayer {

    void prepare();

    void setDataSource(String url);

    void play();

    void pause();

    void stop();

    void release();

}

package com.luckyboy.music;

import android.util.Log;

public class MusicPlayer implements IPlayer{

    private static final String TAG = "MusicPlayer";

    @Override
    public void prepare() {
        Log.d(TAG, "prepare: ");
    }

    @Override
    public void setDataSource(String url) {
        Log.d(TAG, "setDataSource: ");
    }

    @Override
    public void play() {
        Log.d(TAG, "play: ");
    }

    @Override
    public void pause() {
        Log.d(TAG, "pause: ");
    }

    @Override
    public void stop() {
        Log.d(TAG, "stop: ");
    }

    @Override
    public void release() {
        Log.d(TAG, "release: ");
    }

}

10. 在创建完成AndroidLibrary之后,首先在 gradle.properties 文件配置参数

NEXUS_REPOSITORY_URL=http://192.168.0.74:8081/repository/imooc-snapshot/
POM_GROUPID=com.imooc.android
POM_PACKAGING=aar
NEXUS_USERNAME=admin
NEXUS_PASSWORD=admin123

1.  NEXUS_REPOSITORY_URL 是maven服务器的仓库地址
2. POM_GROUPID 是组的ID
3. POM_PACKAGING是打包的方式
4. NEXUS_USERNAME是Maven服务的访问账号名
5. NEXUS_PASSWORD是Maven服务器的访问账号名密码

11. 在 lib_music Android库的 build.gradle 文件中添加如下代码

apply plugin: 'com.android.library'
apply plugin: 'maven' //因为要上传Maven私服,所以需要有maven插件

def pomName = this.getName()
def pomVersion = '1.0.0-SNAPSHOT'
def pomDescription = 'the music library for all projects'

android {
    compileSdkVersion 30

    defaultConfig {
        minSdkVersion 22
        targetSdkVersion 30
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        consumerProguardFiles "consumer-rules.pro"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {

    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'com.google.android.material:material:1.2.1'
    testImplementation 'junit:junit:4.13.2'
    androidTestImplementation 'androidx.test.ext:junit:1.1.2'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
}


//只有配置了 maven 插件 才能使用uploadArchives
//注意:下面的内容千万不要写错,否则很难查清问题,一般有错都是拼写问题
uploadArchives {
    repositories {
        mavenDeployer {
            repository(url: NEXUS_REPOSITORY_URL){
                authentication(
                        userName: NEXUS_USERNAME,
                        password: NEXUS_PASSWORD
                )
                pom.project {
                    name pomName
                    version pomVersion
                    description pomDescription
                    artifactId pomVersion
                    groupId POM_GROUPID
                    packaging POM_PACKAGING
                }
            }
        }
    }
}

afterEvaluate { project->
    println 'lib_music AfterEvaluate...'
}

12. 在AndroidStudio 右侧栏找到  uploadArchives Task,然后点击执行该任务

gradle引入maven仓库依赖 gradle上传maven仓库_gradle引入maven仓库依赖_07

 13. 在上传成功之后,在 maven 服务器就可以查找到上传的库,如下图右下角就是Gradle 依赖

gradle引入maven仓库依赖 gradle上传maven仓库_maven_08

14. 我们可以在本地尝试使用Gradle依赖来下载并使用 lib_music 的库,在项目的根目录build.gradle文件中做如下配置

buildscript {
    repositories {
        google()
        jcenter()
        mavenCentral()
        //此处添加是为了添加插件
        //添加自己创建的仓库地址
        maven {
            //拷贝粘贴对应的
            url 'http://192.168.0.74:8081/repository/imooc-release/'
            credentials{
                username 'admin'
                password 'admin123'
            }
        }
        maven {
            //拷贝粘贴对应的
            url 'http://192.168.0.74:8081/repository/imooc-snapshot/'
            credentials{
                username 'admin'
                password 'admin123'
            }
        }
    }
    dependencies {
        //classpath "com.android.tools.build:gradle:4.2.1"
        classpath "com.android.tools.build:gradle:3.1.2"
     
    }
}

allprojects {
    repositories {
        google()
        mavenCentral()
        jcenter() // Warning: this repository is going to shut down soon
        maven {
            //拷贝粘贴对应的
            url 'http://192.168.0.74:8081/repository/imooc-release/'
            credentials{
                username 'admin'
                password 'admin123'
            }
        }
        maven {
            //拷贝粘贴对应的
            url 'http://192.168.0.74:8081/repository/imooc-snapshot/'
            credentials{
                username 'admin'
                password 'admin123'
            }
        }
        //为源码工程提供依赖
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

15. 修改 app/build.gradle文件中的 lib_music 的依赖

dependencies {

    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'com.google.android.material:material:1.2.1'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.1'
    testImplementation 'junit:junit:4.13.2'
    androidTestImplementation 'androidx.test.ext:junit:1.1.2'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
    //implementation project(':lib_music')
    implementation 'com.imooc.android:1.0.0-SNAPSHOT:1.0.0-20210914.114647-1'
}

16. 查看是否添加依赖正常,如下可以看到添加成功

gradle引入maven仓库依赖 gradle上传maven仓库_ooc_09