我有一個複雜的項目,有許多模塊和一個主要應用程序。 我在這些模塊中的兩個上添加了「uploadArchives」(因爲是android庫)。通過這種方式,我可以在Maven上發佈我的庫,只需從我的主應用程序運行任務uploadArchives,或者使用gradle並調用此任務「uploadArchives」。
你可以在你的build.gradle(你想發佈的庫)「build.finalizedBy(uploadArchives)」中使用它。
例如:
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
minSdkVersion 17
targetSdkVersion 23
versionCode 2
versionName "2.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
lintOptions {
abortOnError false
}
}
build.finalizedBy(uploadArchives)
task wrapper(type: Wrapper) {
gradleVersion = "2.8"
}
dependencies {
compile project(':spfshared')
compile 'com.google.code.gson:gson:2.4'
}
//task for Sonatype Nexus OSS
uploadArchives {
repositories {
mavenDeployer {
repository(
url: "${nexusUrl}/content/repositories/releases") {
authentication(userName: nexusUsername, password: nexusPassword)
}
snapshotRepository(
url: "${nexusUrl}/content/repositories/snapshots") {
authentication(userName: nexusUsername, password: nexusPassword)
}
pom.version = "2.0.0.1"
pom.artifactId = "spflib"
pom.groupId = "it.polimi.spf"
}
}
}
每次構建之後,uploadArchives將開始。
我試過這個解決方案,它的工作原理。
我也嘗試了一些解決方法,「build.dependsOn myTaskName」沒有成功。如果你想要,你可以嘗試,但在我的AndroidStudio,它的第一個解決方案。 PS:我使用命令「gradlew -q build」測試了我的解決方案,並且還特別從我的Android Studio主模塊(它是我的主應用程序)中運行「build」任務。
如果您想在每個版本中調用「uploadArchives」,只需將「build」替換爲發佈任務即可。
更新: 我也試圖與這些代碼行:
defaultTasks 'uploadArchives'
clean.finalizedBy(uploadArchives)
assembleDebug.finalizedBy(uploadArchives)
assembleRelease.finalizedBy(uploadArchives)
但有時他們稱之爲「uploadArchives」很多次,我認爲這不是一個好主意。
你所問的是非常具有挑戰性的。我嘗試了一整個小時:)
你有沒有想過創建travis.ci或其他類型的構建自動化腳本(sh文件)的?當然gradlew或其他終端工具有一個選項來建立應用程序。從那裏開始,就像每次執行這些操作時都運行構建腳本一樣簡單。 –