我有一个问题,我有一个build.properties,我有一个属性test = true; 只有在测试成立的情况下才应调用ant目标。我希望将该值作为默认值。有可能以某种方式改变詹金斯的价值吗?我试着设置test = false,但似乎没有效果。一些建议?
答案 0 :(得分:1)
在这种情况下,您必须像下面一样修改Ant脚本,然后它将按预期工作。 如果没有尝试类似的逻辑来设置ant的默认值和动态值。然后,如果从Jenkins传递值,如果它是-Dtest = true,否则默认情况下会将值赋值为false
<condition property="test" value="${test}" else="false">
<isset property="${test}" />
</condition>
答案 1 :(得分:1)
让Ant目标仅在特定条件下执行
在Ant构建脚本中,您需要一个仅在满足特定条件时才执行的目标。使用if="property"
标记的<target>
属性很容易,但是检查属性是 set ,而不是它的值。您已将该属性设置为默认test=true
。因此,对于您的情况,可以使用一种不同的方法。
<condition property="test.execute" value="${test}">
<matches pattern="true" string="${test}"/>
</condition>
<target name="runtest" if="test.execute">
<echo message="running tests"/>
</target>
此脚本会检查${test}
的值,如果该值与 text "true"
匹配,则会将${test.execute}
的值设置为{{1}的值1}}。如果不是(即&#34; true&#34;以外的任何内容),则属性${test}
仍然未设置。
最后,只有在设置了属性${test.execute}
时才会执行目标runtest
。
注意:这仅在该属性未设置时才有效。即使构建文件或属性中包含${test.execute}
也会破坏这一点。
将变量通过Jenkins传递给Ant:
<property name="test.execute" value=""/>
的根目录中为默认build.xml
留空)$WORKSPACE
格式输入参数。这与在命令行上使用param=value
相同。请注意,在Jenkins中指定此字段中的属性时,您需要不需要-Dparam=value
。-D
答案 2 :(得分:1)
使用Ant 1.9.2及更高版本(它假设使用Ant 1.9.1,但我遇到了问题),您现在可以在大多数任务中使用if:true参数:
<project default="test" xmlns:if="ant:if"> <!-- Note xmlns in the entity "project" -->
<property name="run.this" value="true"/>
<target name="test">
<echo if:true="${run.this}">Run test target</echo>
</target>
</project>
如果我跑:
$ ant
Buildfile: /Users/david/build.xml
test:
[echo] Run test target
BUILD SUCCESSFUL
Total time: 0 seconds
如果我跑:
ant -Drun.this=false # Sets property run.this to "false"
test:
BUILD SUCCESSFUL
Total time: 0 seconds
请注意,当if:true="${run.this}
为false时,run.this
会阻止回显执行。