随着公司新游戏、新项目的增加,为了提高开发效率,方便项目的统一维护,于是我们将一些积累的公共代码以及第三方的开源库放在一个library项目中,然后上传到公司自己基于Nexus搭建的Maven仓库,以便在其他项目中通过Gradle配置来添加引用,既方便又快捷。
一.编写gradle脚本配置
1.首先在lib下新建gradle.properties文件,在里面配置版本号,仓库地址,仓库包名和名称以及maven仓库的用户名和密码。
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包啦
4.别的项目依赖仓库,在project.gradle里面进行配置
allprojets {
repositories {
jcenter()
maven{
url '刚才上传的仓库地址'
}
}
}
在主module的build.gradle里面进行依赖
compile 'com.sdk.manage:swanalytics:1.0.0'
5.碰到的坑,当代码混淆上传的时候要关掉androidSourcesJar和androidJavadocsJar上传,不然别的项目依赖下载的aar包有问题。