隨着公司新遊戲、新項目的增加,爲了提高開發效率,方便項目的統一維護,於是我們將一些積累的公共代碼以及第三方的開源庫放在一個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包有問題。