2014-03-24 72 views
1

我有一個問題,我有一個build.properties我有一個屬性test = true; 和螞蟻目標應該只在情況下被調用是測試是真實的。我希望將該值作爲默認值。有沒有可能改變詹金斯的價值?我試圖設置test = false,但似乎沒有效果。一些建議?螞蟻屬性覆蓋

+0

您是否嘗試過簡單地將'test = true'放入Jenkins作業中「invoke Ant」構建步驟的屬性部分?在那裏設置的屬性的處理方式與通過命令行傳遞給Ant的屬性相同,因此應覆蓋構建腳本或屬性文件中設置的任何內容。 – CAustin

回答

1

在這種情況下,您必須像下面一樣修改Ant腳本,然後它將按照您的預期工作。 如果不嘗試類似的邏輯來爲螞蟻設置默認值和動態值。然後,如果你從詹金斯傳遞價值,如果它是-Dtest =真,否則默認情況下它會值分配給假

<condition property="test" value="${test}" else="false"> 
    <isset property="${test}" /> 
</condition> 
1

爲了有一個Ant目標只在一定條件下

執行在Ant構建腳本,你需要一個只有在滿足某個條件時才執行的目標。使用<target>標籤的if="property"屬性很容易做到,但是如果屬性是設置爲,則不檢查它的值。並且您已將該屬性設置爲默認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}價值。如果不是(即非「真」),則屬性${test.execute}仍然爲未設置

最後,只有在屬性${test.execute}被設置時纔會執行目標runtest

注意:這隻會在該屬性保持未設置時才起作用。即使在構建文件或屬性中有<property name="test.execute" value=""/>也會破壞它。

要通過詹金斯傳遞變量到Ant:

  • 選擇調用Ant構建步驟
  • 點擊高級...
  • 目標,輸入常用的指標(或者默認爲空)
  • 根據構建文件,指定構建文件(或在$WORKSPACE根留空爲默認build.xml
  • 屬性,格式爲param=value參數輸入。這與在命令行上使用-Dparam=value相同。請注意,在Jenkins中指定此字段中的屬性時,您需要而不是需要-D
  • 所以,進入test=false
+0

非常感謝,它幾乎奏效。這是一個恥辱,我不能選擇2個答案是正確的!但它幫助了很多。 – bearbearbear

+0

你能詳細說明哪些部分不起作用嗎? – Slav

+0

不知怎的,它只是失敗了 – bearbearbear

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 

請注意,當run.this爲假時,if:true="${run.this}可防止執行回顯。