簡體   English   中英

Ant屬性覆蓋

[英]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:

  • 選擇Invoke Ant build step
  • 單擊高級...
  • 目標下 ,輸入您的常用目標(或默認為空)
  • Build File下 ,指定構建文件(或在$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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM