Gradle 当READY在任务运行前未设置渐变属性时
我在gradle.properties文件中有一个版本属性,它给出了我正在构建的版本。我在构建中有一个名为release的任务,如果该任务出现在任务图中,将上载到快照repo。然而,发生的情况是,即使我在构建任务中包含了发布任务,但当uploadArchives运行时,快照并没有附加到我的version属性,因此它尝试上载到错误的存储库并失败。准备就绪时会运行,但在上载存档之前似乎不会运行。有人能解释一下这里发生了什么吗Gradle 当READY在任务运行前未设置渐变属性时,gradle,Gradle,我在gradle.properties文件中有一个版本属性,它给出了我正在构建的版本。我在构建中有一个名为release的任务,如果该任务出现在任务图中,将上载到快照repo。然而,发生的情况是,即使我在构建任务中包含了发布任务,但当uploadArchives运行时,快照并没有附加到我的version属性,因此它尝试上载到错误的存储库并失败。准备就绪时会运行,但在上载存档之前似乎不会运行。有人能解释一下这里发生了什么吗 uploadArchives { repositories {
uploadArchives {
repositories {
ivy {
credentials {
username nexusUser
password nexusPassword
}
if (version.endsWith("-SNAPSHOT")) {
url nexusSnapshotRepository
} else {
url nexusReleaseRepository
}
}
}
}
gradle.taskGraph.whenReady {taskGraph ->
if (!taskGraph.hasTask(release)) {
version = version + '-SNAPSHOT'
}
println "release task not included - version set to $version"
}
task release(){
doLast{
println "Releasing"
}
}
这与gradle网站上的示例非常相似,因此我不知道出了什么问题
脚本在配置阶段检查project.version值,不是在任务执行时检查,而是在构建任务执行图后才对其进行修改。解决此问题的一种方法是从taskGraph内重写存储库url。whenReady回调:
uploadArchives {
repositories {
ivy {
name "nexus"
url nexusReleaseRepository
...
}
}
}
gradle.taskGraph.whenReady { taskGraph ->
if (!taskGraph.hasTask(release)) {
version += '-SNAPSHOT'
uploadArchives.repositories.nexus.url nexusSnapshotRepository
// ps: println has to go inside here
}
}