我希望在版本控制系统中自动化版本管理并发布相关工件。
因此我使用以下构建脚本(用于测试的简化版本)
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
只要我不在任务执行中更改版本属性,Everythings就可以正常工作。 (在createReleaseVersion任务中完成)
如果我更改了版本,则会使用正确的名称创建JAR文件,但发布时要根据旧版本使用该名称。
如何使用在任务执行期间计算的版本进行发布?
答案 0 :(得分:0)
这是因为在您的任务执行之前配置了$str = "bob-2-4 asdfasdfasdf bob-2-4 asdfasdf bob-3-1";
my @unique = $str =~ m/(bob-\d-\d)/g;
# array is now "bob-2-4, bob-2-4, bob-3-1"
。
我不确定在执行期间从您的任务更新publishing
配置是否安全(您可以尝试)。解决此问题的更好方法是使用项目参数。例如,您可以像这样更改publishing
:
build.gradle
如果您只是运行任务,则版本为version = "13.7"
if (!project.hasProperty('buildRelease')) {
version += "-SNAPSHOT";
}
但是如果设置项目属性13.7-SNAPSHOT
,则版本为buildRelease
在运行任务时设置项目属性使用13.7
前缀,例如:
-P