1

ソース ディレクトリと宛先ディレクトリは、Java ソース ファイルをコンパイルするために再帰的にスキャンされます。対応する .class ファイルがないか、クラス ファイルが .java ファイルよりも古い Java ファイルのみがコンパイルされます。

上記はjavac タスク、ANT Apacheからのものです。しかし、私の場合、.java が何度も再コンパイルされる理由が本当にわかりません。

私の作業ディレクトリは .../trunk です

ソース (.java) は Trunk/src にあります

ターゲット (.class) はトランク/ビンにあります

私の .java ファイルはデフォルトのパッケージを使用しています。つまり、パッケージ宣言はありません。

javac タスクは、私の build.xml でこのように使用されます

<javac srcdir="${src}"
   destdir="${bin}"
   includeantruntime="false">
  <classpath>
<pathelement location="${bin}"/>    
<pathelement path="${java.class.path}"/>
  </classpath>
</javac>

私が定義した場所

<property name="src"    value="src"/>
<property name="bin"    value="bin/"/>

すべて問題ないように見えますが、ANT を実行するたびに .java ファイルが再コンパイルされます。本当に奇妙です!理由を教えてください。ありがとう。

4

1 に答える 1

3

おお、答えが出ました。申し訳ありませんが、上記のすべての話をしませんでした。実際、「javac」部分の前に antlr lexer/parser の生成があります。そのためには、「-make」オプションを追加して、レクサーとパーサーがより新しいタイムスタンプで再生成されないようにする必要がありました。( ANTLR3 に ANT を使用するより)

ANLTR3 コマンドライン オプション "-make" は、新しいファイルが文法よりも古い場合にのみ生成されます。この動作は、「コンパイル」などの依存タスクに影響を与える可能性があり、最新であるため何も処理されない可能性があります。

于 2011-11-26T18:40:54.880 に答える