2008-09-29 13 views
5

我有問題,只有在構建計算機中安裝了Java 1.5時才能執行Ant中的特定步驟。任務定義使用的是使用1.5編譯的jar文件,因此使用1.4虛擬機運行將引發IncompatibleClassVersion異常。使用ANT時,如何才能定義一個任務,只有當我有一些特定的Java版本?

我必須找到一個解決方案,同時讓這個任務適用於這個需要1.4的特定項目,但是有一個問題出現在我的面前。如何避免定義此任務並執行此可選步驟(如果我沒有特定的Java版本)?

我可以在目標標籤上使用「if」或「unless」標籤,但這些標籤只檢查屬性是否設置。我也希望有一個不需要額外庫的解決方案,但我不知道標準中的內置功能是否足以執行此類任務。

回答

10

Java版本通過ant.java.version屬性公開。使用條件來設置屬性,並且只有在該屬性爲true時才執行該任務。

<?xml version="1.0" encoding="UTF-8"?> 

<project name="project" default="default"> 

    <target name="default" depends="javaCheck" if="isJava6"> 
     <echo message="Hello, World!" /> 
    </target> 

    <target name="javaCheck"> 
     <echo message="ant.java.version=${ant.java.version}" /> 
     <condition property="isJava6"> 
      <equals arg1="${ant.java.version}" arg2="1.6" /> 
     </condition> 
    </target> 

</project> 
2

檢查構建文件的屬性爲${ant.java.version}

您可以使用<condition>元素,使任務條件時,屬性等於某個值:

<condition property="legal-java"> 
    <matches pattern="1.[56].*" string="${ant.java.version}"/> 
</condition> 
+0

唉唉它的一個恥辱,我有使用Ant 1.6!這個正則表達式的功能只有在Ant 1.7以後纔可用! – 2008-09-29 08:22:34

相關問題