Я пытаюсь использовать переменную (заполняемую из общего файла), чтобы добавить номер версии, когда война создается плагином весенней загрузки bootWar.Однако, похоже, что переменная не находится в области видимости.Я добавил doFirst в bootWar, чтобы показать, что переменная действительно заполняется до начала войны. Этот вопрос предлагает использовать проект, но он также не работает (вторая попытка ниже).Разве невозможно использовать переменную в этой точке процесса сборки?
task populateBuildVersion (dependsOn: ["buildVersionFromFile", "buildVersionPlaceholder"]){
doLast {
project.ext.buildVersion = buildVersion
println "------------------------------------------------------------------"
println "| Build version: $buildVersion"
println "------------------------------------------------------------------"
}
}
bootWar {
into('') {
from "${project(':web').projectDir}/src/main/webapp"
// PICK ONE, COMMENT THE OTHERS:
rename "webpacked.js", buildVersion // fails at task runtime with "Caused by: java.lang.NullPointerException: replacement"
rename "webpacked.js", project.buildVersion // fails at initialization with "Could not get unknown property 'buildVersion' for root project 'myproject' of type org.gradle.api.Project."
rename "webpacked.js", "${buildVersion}.js" // results in null.js
}
doFirst {
println "in bootWar dofirst: ${buildVersion}" // OK
println buildVersion // OK
println project.buildVersion // OK
}
}
tasks.bootWar.dependsOn(populateBuildVersion)
Вывод:
> Task :populateBuildVersion
------------------------------------------------------------------
| Build version: xyz_7.8.2_2417
------------------------------------------------------------------
> Task :bootWar
in bootWar dofirst: xyz_7.8.2_2417
xyz_7.8.2_2417
xyz_7.8.2_2417
> Task :bootWar FAILED (for various reasons)