我有一个使用maven插件的build.gradle文件。我正在尝试构建一个项目并将工件上传到nexus repo。构建和上传部分工作正常,但是我遇到了试图动态设置版本名称和代码的问题。这是我的build.gradle文件中的重要任务:
uploadArchives {
repositories {
mavenDeployer {
snapshotRepository(url: "https://artifact.example.net/content/repositories/snapshots") {
authentication(userName: artifactUsername, password: artifactPassword)
}
pom.version = rootProject.ext.name.toString() + "-" + rootProject.ext.code.toString() + "-SNAPSHOT"
pom.artifactId = appId
pom.groupId = "com.example.mobile.android"
}
}
}
task getVersionCode(type: Exec) {
commandLine './getVersionCode.sh'
workingDir scriptDir
standardOutput = new ByteArrayOutputStream()
doLast {
rootProject.ext.code = standardOutput.toString() as Integer
println(code)
}
}
task getVersionName(type: Exec) {
commandLine './getVersionName.sh'
workingDir scriptDir
standardOutput = new ByteArrayOutputStream()
doLast {
rootProject.ext.name = standardOutput.toString()
println(rootProject.ext.name)
}
}
preBuild.dependsOn getVersionCode
preBuild.dependsOn getVersionName
uploadArchives.dependsOn getVersionCode
uploadArchives.dependsOn getVersionName
我发现即使getVersionCode和getVersionName任务在uploadArchives任务运行之前运行,变量rootProject.ext.name和rootproject.ext.code也有默认值,而不是动态设置的值通过任务。我已经验证了如果我设置了一个变量:
rootProject.ext.name = "new Name"
然后我可以打印出这样的值:
println(rootProject.ext.name)
一切正常,但是当我尝试使用mavenDeployer任务中的相同变量时,变量会重置为默认值。我在这里做错了什么?
答案 0 :(得分:0)
尝试添加'mustRunAfter',例如preBuild.mustRunAfter getVersionCode
。