2008-10-24 81 views
7

我試圖通過命令行重寫Ant編譯器屬性,以便所有'javac'任務都使用我指定的編譯器。 我遇到的問題是,爲編譯器設置自己的值的任何目標都會覆蓋我在命令行設置的值。所以,即使我輸入以下命令。覆蓋Ant javac任務中的編譯器屬性

ant -Dbuild.compiler=mycompiler 

有任何的目標是要使用,因爲該編譯器=「現代」屬性

<javac srcdir="." 
     destdir="${classes.dir}/core" 
     compiler="modern" 
     encoding="UTF-8"> 
    <include name="org/**" /> 
    <include name="com/**" /> 
    <compilerarg line="${config.build.compilerarg}" /> 
</javac>  

的現代編譯器,而不是mycompiler以下是有什麼辦法可以在命令行覆蓋此,還是我堅持編輯構建文件?

回答

7

螞蟻javac task documentation說:

有可能使用不同的編譯器。這可以通過設置全局build.compiler屬性來指定,該屬性將影響整個構建中的所有任務,或者通過設置特定於當前任務的編譯器屬性。對於無論是build.compiler財產或編譯器屬性的有效值爲:

聽起來好像你可以要麼指定全局build.compiler財產設置一個特定的編譯器的屬性。

所以,它看起來像您需要修改您的構建文件,並且:

  1. 刪除使用javac調用編譯器的屬性,並允許 全球build.compiler設置 級聯下來

  2. 變化從硬編碼的字符串 編譯=「現代」編譯器 屬性值是屬性 compiler =「$ {javac.compiler}」