我的一个构建任务提取有关当前SVN分支的信息。在标记的构建中,我希望更严格并且在构建时失败,例如,链接检查器找到联机帮助文件的死链接。在分支或主干的常规构建中,这不应该破坏构建。
我有以下代码,其中提到的Perl脚本创建了一个属性文件:
task generateSvnInfo(type: Exec) {
outputs.files "generated/svninfo"
executable "perl"
args "..."
}
Properties buildProps = new Properties()
task svninfo() {
inputs.files generateSvnInfo.outputs.files
outputs.upToDateWhen { false }
buildProps.load(new FileInputStream(inputs.files.getSingleFile()))
}
现在我的其他目标取决于svninfo
(以及填充buildProps
的事实)。
task checkHelpLinks(type: Exec) {
dependsOn "svninfo"
executable "perl"
args "..."
}
如果找到死的帮助链接,这将始终失败。据我了解,ignoreExitValue
默认为false
。要在非标记版本上将其设置为true
,我可以将其添加到checkHelpLinks
任务中:
ignoreExitValue = true
doLast {
ignoreExitValue = buildProps.FROM_TAG == "false"
}
这样可行,但我有四到五个检查任务,并且不希望重复该代码。所以我试过
tasks.grep(~ /^check.+/).each { task ->
task.ignoreExitValue = true
task.doLast {
task.ignoreExitValue = buildProps.FROM_TAG == "false"
}
}
此代码似乎没有被执行。我认为这可能是因为我将Task对象与grep
中的String进行比较,但使用
tasks.grep(it.name =~ /^check.+/).each { task ->
给我一个构建脚本错误("无法找到属性'它在根项目' foo'。)
如何将标记检查添加到所有检查任务中?
是否有更好的方法从作为构建过程的一部分创建的文件中加载属性?
是否有SVN插件可以为我工作?