[英]Ant properties override
我有一個問題,我有一個build.properties,我有一個屬性test = true; 只有在測試成立的情況下才應調用ant目標。 我希望將該值作為默認值。 有可能以某種方式改變詹金斯的價值嗎? 我試着設置test = false,但似乎沒有效果。 一些建議?
在這種情況下,您必須像下面一樣修改Ant腳本,然后它將按預期工作。 如果沒有嘗試類似的邏輯來設置ant的默認值和動態值。 然后,如果從Jenkins傳遞值,如果它是-Dtest = true,否則默認情況下它會將值賦值為false
<condition property="test" value="${test}" else="false">
<isset property="${test}" />
</condition>
使Ant目標僅在特定條件下執行
在Ant構建腳本中,您需要一個僅在滿足特定條件時才執行的目標。 使用<target>
標記的if="property"
屬性很容易,但是檢查屬性是否設置 ,而不是它的值。 並且您已將該屬性設置為default 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}
的值,如果匹配文本 "true"
,則將${test.execute}
的值設置為${test}
值。 如果不是(即“true”以外的任何內容),則屬性${test.execute}
仍然未設置 。
最后,只有在設置了屬性${test.execute}
才會執行目標運行runtest
。
注意:這僅在該屬性未設置時才有效。 即使在構建文件或屬性中有<property name="test.execute" value=""/>
也會破壞它。
要將變量通過Jenkins傳遞給Ant:
$WORKSPACE
根目錄中為默認build.xml
留空) param=value
格式輸入參數。 這與在命令行上使用-Dparam=value
相同。 請注意,您不需要 -D
在詹金斯在此字段中指定屬性時。 test=false
使用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}
阻止echo在run.this
為false時執行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.