ajc および iajc は、Eclipse に付属する JDT コンパイラーの拡張機能です。したがって、ajc と iajc は、純粋な Java に対して Eclipse とまったく同じバイト コードを生成します (これには、Oracle の javac との小さな違いがいくつか含まれています)。
ajc と iajc は基本的に同じですが、iajc はインクリメンタルです (iajc のiです)。これは、コンパイラがタイムスタンプをチェックし、可能であればよりスマートなインクリメンタル ビルドを実行し、フル ビルドを回避することを意味します (Eclipse 内で AJDT を使用する場合と同様)。この機能以外は、基本的に同じです。詳細については、こちらを参照してください。
http://www.eclipse.org/aspectj/doc/released/devguide/antTasks-iajc.html
プロジェクトにアスペクトが含まれていない場合、ajc コンパイラの使用はオプションです。これらのプロジェクトは、アスペクトを含むプロジェクトのインパス上にある可能性があります。コード スタイルの側面を含むものをコンパイルするには、ajc を使用する必要があります。
注釈スタイルの側面は少し異なります。LTW のみに注釈スタイルを使用している場合は、適切な aop.xml が作成されている限り、javac を使用してそれらをコンパイルできます。ウィーバーは実行時に使用できます。
ただし、CTW ウィービングを使用したアノテーション スタイルには ajc が必要です。
TestProject
上記の特定のケースでは、アスペクト プロジェクトの inpath にある限り、javac を使用してコンパイルできます。これは、TestProject のクラス ファイルが書き直され、アスペクト プロジェクトのクラス ファイルと結合されることを意味します。
または、LTW を使用している場合は、inpath に追加する必要はなく、TestProject
javac を使用できます。ただし、実行時にアプリケーションを LTW 用に設定する必要があります。
編集
以下のコメントに答えるには:
はい。ajc または iajc タスクを使用して、最初にアスペクト プロジェクトをコンパイルできます。次に、iajc タスクを使用し、さらに最初のプロジェクトの結果をアスペクト パスに置くことで、2 番目の純粋な Java プロジェクトをコンパイルできます。これには javac を使用できません。
ant build.xml スニペットは次のようになります。
<project name="simple-example" default="compile" >
<taskdef
resource="org/aspectj/tools/ant/taskdefs/aspectjTaskdefs.properties">
<classpath>
<pathelement location="${home.dir}/tools/aspectj/lib/aspectjtools.jar"/>
</classpath>
</taskdef>
<target name="compile" >
<iajc sourceroots="${home.dir}/TestProject-Aspects/src"
classpath="${home.dir}/tools/aspectj/lib/aspectjrt.jar"
destDir="${home.dir}/TestProject-Aspects/bin"/>
<iajc sourceroots="${home.dir}/TestProject/src"
classpath="${home.dir}/tools/aspectj/lib/aspectjrt.jar"
destDir="${home.dir}/TestProject/bin"
aspectPath="${home.dir}/TestProject-Aspects/bin"/>
</target>
</project>
の詳細については、こちらを参照してくださいiajc
。
http://www.eclipse.org/aspectj/doc/released/devguide/antTasks-iajc.html