发布androidlib项目到maven仓库

随着公司新游戏、新项目的增加,为了提高开发效率,方便项目的统一维护,于是我们将一些积累的公共代码以及第三方的开源库放在一个library项目中,然后上传到公司自己基于Nexus搭建的Maven仓库,以便在其他项目中通过Gradle配置来添加引用,既方便又快捷。
一.编写gradle脚本配置
1.首先在lib下新建gradle.properties文件,在里面配置版本号,仓库地址,仓库包名和名称以及maven仓库的用户名和密码。发布androidlib项目到maven仓库_第1张图片

VERSION=1.1.0
GROUP_ID=com.sdk.manage
ARTIFACT_ID=swanalytics

RELEASE_URL=
SNAPSHOT_URL=

NAME=
PASSWORD=

2.新建maven_push.gradle文件

apply plugin: 'maven'
apply plugin: 'signing'
apply plugin: 'maven-publish'


configurations {
    deployerJars
}

repositories {
    mavenCentral()
}

// 判断版本是Release or Snapshots
def isReleaseBuild() {
    return !VERSION.contains("SNAPSHOT");
}

// 获取仓库url
def getRepositoryUrl() {
    return isReleaseBuild() ? RELEASE_URL : SNAPSHOT_URL;
}

uploadArchives {
    repositories {
        mavenDeployer {

            repository(url: getRepositoryUrl()) {
                authentication(userName : NAME, password: PASSWORD) // maven授权信息
            }

            beforeDeployment {
                MavenDeployment deployment -> signing.signPom(deployment)
            }

            pom.version = VERSION
            pom.artifactId = ARTIFACT_ID
            pom.groupId = GROUP_ID
        }
    }
}

// type显示指定任务类型或任务, 这里指定要执行Javadoc这个task,这个task在gradle中已经定义
task androidJavadocs(type: Javadoc) {
    // 设置源码所在的位置
    source = android.sourceSets.main.java.sourceFiles
}

// 生成javadoc.jar
task androidJavadocsJar(type: Jar) {
    // 指定文档名称
    classifier = 'javadoc'
    from androidJavadocs.destinationDir
}

// 生成sources.jar
task androidSourcesJar(type: Jar) {
    classifier = 'sources'
    from android.sourceSets.main.java.sourceFiles
}

// 产生相关配置文件的任务
artifacts {
//    archives androidSourcesJar
//    archives androidJavadocsJar
}

// 进行数字签名
signing {
    // 当 发布版本 & 存在"uploadArchives"任务时,才执行
    required { isReleaseBuild() && gradle.taskGraph.hasTask("uploadArchives") }
    sign configurations.archives
}

3.在build.gradle里面进行依赖apply from: 'maven_push.gradle’点击上传,然后就可以在仓库中看到aar包啦发布androidlib项目到maven仓库_第2张图片
4.别的项目依赖仓库,在project.gradle里面进行配置

allprojets {
    repositories {
        jcenter()
        maven{
            url '刚才上传的仓库地址'
        }
    }
}

在主module的build.gradle里面进行依赖

compile 'com.sdk.manage:swanalytics:1.0.0'

5.碰到的坑,当代码混淆上传的时候要关掉androidSourcesJar和androidJavadocsJar上传,不然别的项目依赖下载的aar包有问题。

你可能感兴趣的:(Android,androidlib,maven,library发布到maven,library发布到仓库,AS发布到maven,AS发布仓库)