1
我想在版本控制系統中自動發佈管理併發布相關的工件。gradle動態計算髮布版本
所以我用下面的構建腳本(簡化版本進行測試)
apply plugin: 'java'
apply plugin: 'maven-publish'
// --- Setup artifactory server repository ---
artifactory_contextUrl="http://vie2rhp02904"
artifactory_user="admin"
artifactory_password="..."
repositories {
maven { url "${artifactory_contextUrl}/libs-release" }
}
// -------------------------------------------
defaultTasks 'doit'
group = 'release-test'
version = "13.7-SNAPSHOT"
// --- Setup publishing parameters ---
publishing.repositories {
maven {
credentials {
username "${artifactory_user}"
password "${artifactory_password}"
}
if (project.version.endsWith('-SNAPSHOT')) {
url "${artifactory_contextUrl}/libs-snapshot-local"
} else {
url "${artifactory_contextUrl}/libs-release-local"
}
}
}
project.publishing.publications {
mavenJava(MavenPublication) {
from components.java
}
}
// -------------------------------------------
task createReleaseVersion << {
println("Version at start: $version")
// Doing release management, which builds a tagged version without the "-SNAPSHOT" phrase
version = "13.7.0"
println("actual version: $version")
}
task doit (dependsOn: ['createReleaseVersion', 'publish']) << {
}
publish.mustRunAfter createReleaseVersion
萬物很好,只要我沒有任務的執行中改變版本性質的作品。 (在createReleaseVersion完成任務)
如果我更改版本,JAR文件與正確的名稱創建的,但出版要根據舊版本使用的名稱。
如何使用在任務執行期間計算的版本進行發佈?
T爲了你的回答,我知道原因是因爲執行的順序。 但我希望有一種解決方法。 後續配置編輯不被gradle允許。 (已經嘗試過) 手動設置版本不會讓我更進一步,因爲此任務的主要原因是自動計算新版本。 我現在的woarkaround是使用批處理文件,它會調用gradle兩次。我第一次更新gradle.properties文件中的版本屬性,然後使用新版本來完成其餘部分。 但我寧願做它在一個呼叫 – Horst
@Horst你可以把你的任務的代碼我的if語句裏面?您可以將其添加到問題中,以便我們可以看到發生了什麼 – AdamSkywalker
對不起,我不知道,你是什麼意思?可以通過使用我的構建腳本調用「gradle doit」來重現我的問題。它以錯誤的(最初設置的)版本發佈 – Horst