有時候為了避免頻繁的自己打包aar然後手動上傳到maven庫,想使用gradle配置的方法快速上傳。
是以編寫此文記錄簡單的配置方法,友善有需要的人和自己以後可以直接ctrl c+ctrl v
----本文記錄如何在gradle中配置module自動打包上傳至maven庫
為了友善管理,我們一般會拆分多個配置檔案維護,首先建立一個版本控制配置檔案,内容如下:
//檔案名 config.gradle
ext {
configs = [
versionCode: 100,
versionName: "1.0.0",
isReleases: true, //是否釋出正式版
versionReleases : "1.0.0-releases"
]
}
然後建立一個推送到的maven的配置檔案:
//檔案名 push.gradle
apply plugin: 'maven'
apply from: 'config.gradle'
task androidJavadocs(type: Javadoc) {
source = android.sourceSets.main.java.srcDirs
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}
task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {
classifier = 'javadoc'
from androidJavadocs.destinationDir
}
task androidSourcesJar(type: Jar) {
classifier = 'sources'
from android.sourceSets.main.java.srcDirs
}
artifacts {
archives androidSourcesJar
}
uploadArchives {
repositories {
mavenDeployer {
def isReleases = configs.isReleases;
def repositoryUrl = isReleases ? "http://dev.test.com/repositories/releases/" : "http://dev.test.com/repositories/snapshots/"
def version = isReleases ? configs.versionReleases : "0.0.1-SNAPSHOT"
repository(url: repositoryUrl) {
authentication(userName: "test", password: "123456")
}
pom.groupId = 'com.test.testsdk'
pom.artifactId = 'testsdk'
pom.version = version
pom.project {
licenses {
license {
name 'The Apache Software License, Version 2.0'
url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
}
}
}
}
}
}
其中,需要注意的地方:
1.以下這兩句不要忘了,一個是應用maven插件,一個是導入我們的版本配置檔案
apply plugin: 'maven'
apply from: 'config.gradle'
2.檔案中的下面兩個位址是你需要上傳的maven庫位址,一個是正式服一個是測試服,如果不區分正式測試,可以隻指定一個位址
"http://dev.test.com/repositories/releases/"
"http://dev.test.com/repositories/snapshots/"
3.需要将以下userName和password的值更新為你自己maven庫的登入賬戶密碼
repository(url: repositoryUrl) {
authentication(userName: "test", password: "123456")
}
4.需要将以下值修改
pom.groupId = 'com.test.testsdk'
pom.artifactId = 'testsdk'
pom.version = version//這個讀配置,不用管
說明一下pom.groupId和pom.artifactId應該怎麼設定:
假如你希望在gradle是這樣依賴,
implementation 'android.test.sdk:testsdk:1.0.0'
那麼你的
pom.groupId="android.test.sdk"
pom.artifactId="testsdk"
也就是說第一個冒号前就是pom.groupId第二個冒号後是pom.artifactId
5.修改完之後,在需要自動打包上傳的module的gradle裡面應用此配置檔案,如下:
apply plugin: 'com.android.library'
android {
compileSdkVersion 28
defaultConfig {
minSdkVersion 19
targetSdkVersion 28
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'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
}
//---------------這一行代碼不要忘了---------------------------
apply from: 'push.gradle'
apply from: 'push.gradle'這句不要忘了!而且是放在最後。
ps:注意如果你的自動打包配置檔案和module的gradle檔案不再同一個目錄,不知直接 apply from: 'push.gradle',路徑需要自己注意,可能是這樣的:apply from: '../push.gradle'
-------------------------------------------------------配置完成分割線-----------------------------------------------------------------
配置完成之後,就可以在Terminal中執行 gradlew uploadArchives ,提示success之後就可以依賴到其他項目中了。
打包上傳的同時,執行一下清理,避免緩存造成其他異常可以使用用這個指令打包:gradlew clean uploadArchives