8

すべての 'javac' タスクが指定したコンパイラを使用するように、コマンド ライン経由で Ant コンパイラの属性をオーバーライドしようとしています。私が遭遇した問題は、コンパイラに独自の値を設定するターゲットが、コマンドラインで設定したものをオーバーライドすることです。だから、私は次のコマンドを入力していますが。

ant -Dbuild.compiler=mycompiler  

以下を持つターゲットは、その compiler="modern" 属性のため、mycompiler の代わりに最新のコンパイラを使用します。

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

コマンドラインからこれをオーバーライドする方法はありますか、それともビルドファイルの編集に行き詰まっていますか?

4

1 に答える 1

8

Antjavacタスクのドキュメントには次のように書かれています。

異なるコンパイラを使用することができます。これは、ビルド全体のすべてのタスクに影響するグローバルな build.compiler プロパティを設定するか、現在のタスクに固有のコンパイラ属性を設定することで指定できます。build.compiler プロパティまたは compiler 属性の有効な値は次のとおりです。

グローバルな build.compiler プロパティを指定する、特定のコンパイラ属性を設定できるかのように聞こえます。

そのため、ビルド ファイルを変更し、次のいずれかを行う必要があるようです。

  1. javac 呼び出しからコンパイラ属性を削除し、グローバルな build.compiler 設定をカスケード ダウンできるようにします。

  2. コンパイラ属性の値を、ハードコーディングされた文字列 compiler="modern"から property compiler="${javac.compiler}"に変更します

于 2008-10-24T23:05:51.473 に答える