2015-04-24 17 views
2

在調試build.xml文件或Ant任務時,我經常希望執行一個任務而不執行其依賴項。有沒有辦法從命令行執行此操作?如何防止依賴在Ant中執行?

例如,這個build.xml文件:

<?xml version="1.0" encoding="UTF-8"?> 
<project> 
    <target name="A" /> 
    <target name="B" depends="A" /> 
</project> 

是有,將執行任務B而不是任務的命令?

+1

重複? http://stackoverflow.com/questions/374673/does-ant-offer-a-way-to-bypass-dependency –

回答

0

你必須調整你的Ant腳本來實現這一目標:

<target name="B"> 
    <if> 
     <isset property="some.property"/> 
     <then> 
      <antcall target="A"> 
     </then> 
    </if> 
    <!-- execute task B here --> 
</target> 

如果some.property設置,那麼它會首先執行A其次B。否則,它將跳過任務A並自行執行B

1

您可以使用ifunless執行任何目標條件的屬性。

<project default="B"> 

    <target name="A" unless="no.a"> 
     <echo>in A</echo> 
    </target> 

    <target name="B" depends="A" > 
     <echo>in B</echo> 
    </target> 

</project> 

輸出沒有條件指定:

$ ant 
Buildfile: C:\Users\sudocode\tmp\ant\build.xml 

A: 
    [echo] in A 

B: 
    [echo] in B 

BUILD SUCCESSFUL 
Total time: 0 seconds 

輸出與條件對命令行中指定:

$ ant -Dno.a=any 
Buildfile: C:\Users\sudocode\tmp\ant\build.xml 

A: 

B: 
    [echo] in B 

BUILD SUCCESSFUL 
Total time: 0 seconds 

注:

  • 螞蟻控制檯輸出將顯示該即使進入被阻止,目標也被「擊中」條件。
  • ifunless條件不做布爾檢查。他們只是檢查屬性是否定義。