2011-09-17 2 views
1

既存のプロジェクトでAspectJを使うことを考えます。Javaアプリケーションでのアスペクトの使用 - javac/ajc?

私はいくつかの純粋なJava Eclipseプロジェクトを持っています。私はAOPプロジェクトを作成したいと思います。

いつajcが必要なのか、オプションであるのかよく分かりません。 Ant(javacを使用)をメインビルドとして使用し、ビルドを変更しないようにしたいと考えています。

には、以下のことが可能です:

私はAspectJのEclipseを有効にして、私のアスペクトプロジェクトを作成しています。私はこれからjarを作成し、通常のeclipseワークスペースにaspectj jarを含むこのjarを他のプロジェクトと組み込みます。 ビルドには、javacでの依存関係jarとして、私のaspect jarとaspectj jarが含まれています。

これで十分ですか? または、アプリケーションのすべてのプロジェクトをajcでコンパイルする必要がありますか?

主な目標は、現在のようにできるだけEclipseのセットアップとビルド環境の現在の構造を維持することです。

これはアノテーションスタイルでのみ可能ですか? (そう誰かが私にいくつかのウィーバーの情報とどのように実行時にこれを行うにはをリンクすることができるかどうか?)

はあなたのコードベースにあなたの側面を織るしたい場合は、AJCを使用する必要があります

答えて

1

ありがとうございます。 javacのみを使用する場合は、アノテーションを使用しても、コードはあなたの面で織り込まれません。

つまり、あなたはあなたのアリビルドに多くを追加する必要はありません。そのような

何かは、ジョブ実行する必要があります。

<path id="ajclasspath"> 
    <path refid="classpath"/> 
    <pathelement location="${scm.home}/ant_libs/aspectjrt.jar"/> 
</path> 
<iajc inpath="${classes.dir}" destDir="${classes.dir}" fork="true" maxmem="${aspectj.maxmem}"> 
    <argfiles refid="aspectj.argfiles.path"/> 
    <classpath refid="ajclasspath"/> 
</iajc> 

実際には、あなただけで、通常のように構築し、あなたがiajcがINPATHとしてコンパイルのjavacのあなたの出力ディレクトリを服用してステップを追加し、あなたが入れ同じディレクトリになります。

また、iajcの入力としてjarファイルを取得し、内部に詰め込まれたすべてのものを含むjarファイルを作成することもできます。

編集:または、ランタイムウィービングを使用することができます。アプリがウェブアプリケーションの場合、それほど悪くはありません。もしそうでなければ、私はあなたのアプリを起動するたびに、起動するのにもっと時間がかかるかもしれないので、ランタイムウィービングはお勧めしません。私はランタイム織りで多くの経験がありませんが、あなたはそれをチェックアウトすることができます。私はあなたの側面を定義するためにaop.xmlが必要であることを知っています。

よろしくお願いいたします。