Java 蚂蚁属性覆盖
我有一个问题,我有一个build.properties,其中我有一个属性test=true;Java 蚂蚁属性覆盖,java,ant,jenkins,Java,Ant,Jenkins,我有一个问题,我有一个build.properties,其中我有一个属性test=true; 并且只有在测试为true时才应该调用ant目标。我希望将该值作为默认值。是否有可能以某种方式更改Jenkins中的值?我试图设置test=false,但似乎没有效果。一些建议?在这个场景中,您必须像下面一样修改Ant脚本,然后它将按照您的预期工作。 如果没有,请尝试类似的逻辑为ant设置默认值和动态值。然后,如果您从Jenkins传递值,则该值为-Dtest=true,否则默认情况下,它会将该值赋给fa
并且只有在测试为true时才应该调用ant目标。我希望将该值作为默认值。是否有可能以某种方式更改Jenkins中的值?我试图设置test=false,但似乎没有效果。一些建议?在这个场景中,您必须像下面一样修改Ant脚本,然后它将按照您的预期工作。 如果没有,请尝试类似的逻辑为ant设置默认值和动态值。然后,如果您从Jenkins传递值,则该值为-Dtest=true,否则默认情况下,它会将该值赋给false
<condition property="test" value="${test}" else="false">
<isset property="${test}" />
</condition>
仅在特定条件下执行Ant目标 在Ant构建脚本中,您需要一个仅在满足特定条件时执行的目标。使用
标记的if=“property”
属性很容易,但是检查属性是否已设置,而不是其值。您已经将属性设置为默认值test=true
。因此,对于您的情况,可以使用稍微不同的方法
此脚本检查${test}
的值,如果该值与文本“true”
匹配,则将${test.execute}
的值设置为${test}
。如果不是(即除“true”之外的任何内容),则属性${test.execute}
保持未设置
最后,仅当设置了属性${test.execute}
时,才会执行目标runtest
注意:这仅在该属性保持未设置状态时有效。即使在构建文件或属性中包含
,也会破坏这一点
通过Jenkins将变量传递给Ant:
- 选择调用Ant构建步骤
- 单击高级…
$WORKSPACE
根目录中的默认Build.xml
保留为空)param=value
的格式输入参数。这与在命令行上使用-Dparam=value
相同。请注意,在Jenkins中指定此字段中的属性时,您不需要使用-D
test=false
<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}
在run时阻止echo执行。this
为false。您是否尝试过将test=true
放在“invoke Ant”的属性部分“在你的詹金斯工作中建立步骤?在那里设置的属性与通过命令行传递给Ant的属性一样,因此应该覆盖构建脚本或属性文件中设置的任何内容。非常感谢,它几乎成功了。很遗憾,我不能选择两个正确的答案!但是它帮助了很多。不知怎的,它失败了。奇怪的是,这是一个从我的xml复制的n-paste,有效,并且没有语法错误。哦,好吧,很高兴你让它无论如何都能工作。