上传aar到maven服务器

通过maven私服搭建教程,我们成功的搭建了自己的maven服务器,接下来,我们可以把Android项目的模块打包成aar包,可以提高编译速度,也可以减少编程时不小心把代码修改的了问题。

配置上传

  • Release 使用Gradle可以非常方便的打包aar并上传,打开模块所在的目录下的build.gradle文件,顶部添加如下代码:

    apply plugin: ‘com.android.library’
    apply plugin: ‘maven’

group 'android.cn.bearever' //分组,相当于文件夹
version '1.0.1' //版本号

appply plugin: 'xxx'表示的是需要引用插件xxx,这里的com.android.library表示需要引用Android库的插件,因为我们需要打包的是一个Android的aar包。下面的maven表示需要引用Maven的插件,这样我们就可以上传到自己的maven服务器了。
group 'android.cn.bear'表示的是这个文件在maven服务器的文件目录,version '1.0.1'就表示这个库的版本是“1.0.1”。 下面我们开始配置上传到maven服务器,在文件的最底部添加如下代码:

uploadArchives {
    repositories {
        mavenDeployer {
            //release包
            repository(url: 'http://localhost:8081/nexus/content/repositories/releases') {
                authentication(userName: 'admin', password: 'admin123')
            }
            //快照
            snapshotRepository(url: 'http://localhost:8081/nexus/content/repositories/snapshots') {
                authentication(userName: 'admin', password: 'admin123')
            }
            pom.artifactId = 'mylib' //库名字
            pom.packaging = 'aar' //文件类型
        }
    }
}

这里的uploadArchives就是上传aar包的Task,mavenDeployer表示这是发布到maven的,repository和snapshotRepository分别表示正式包和快照包的配置。
url是maven服务器的地址,可以在maven服务器里面查看 maven-
summary
authentication(userName: 'admin', password: 'admin123')就是maven的登录账号。
pom.artifactId表示的是这个库的名字,pom.packaging表示的是库的文件格式。
最后整个build.gradle文件格式大概如下

apply plugin: 'com.android.library'
apply plugin: 'maven'

group 'android.cn.bearever' //分组,相当于文件夹
version '1.0.1' //版本号

android{}

dependencies{}

uploadArchives{}
  • Snapshot 前面提到还有快照版本的库,那么怎么上传快照版本的库呢?只需要在version里面加上-SNAPSHOT就会上传到快照仓库。例如

    apply plugin: ‘com.android.library’
    apply plugin: ‘maven’

    group ‘android.cn.bear’ //分组,相当于文件夹
    version ‘1.0.1-SNAPSHOT’ //版本号,-SNAPSHOT表示这是快照版本
    ….

生成aar包上传到maven

最后进入模块目录在终端输入gradlew uploadArchives就可以了。或者 gradlew moudleName:uploadArchives

引用

  • Release 首先需要规定仓库的地址,在跟项目的build.gradle里面添加

    repositories {

        maven {
            url 'http://localhost:8081/nexus/content/repositories/releases'
        }
        google()
        jcenter()
    }
    

在其他模块的build.gradledependencies添加依赖引用,例如

dependencies {
    .....其他的依赖引用
    implementation 'android.cn.bearever:mylib:1.0.1'
}

implementation语法规则implementation 'groupId:libname:version'

  • Snapshot

那怎么引用snapshot版本的库呢,需要在根项目添加快照的仓库地址。例如

  repositories {
        maven {
            url 'http://localhost:8081/nexus/content/repositories/releases'
        }
         maven {
            url 'http://localhost:8081/nexus/content/repositories/snapshots'
        }
        google()
        jcenter()
    }

引用的时候在版本号后面加上-SNAPSHOT就表示需要引用快照版本,例如:

implementation 'android.cn.bearever:mylib:1.0.1-SNAPSHOT'
Search by:GoogleBingBaidu