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