今回は、Aspect が関連するライブラリの取り扱い方を見ていきます。
以下の説明で使う例を定義しておきます(下図参照):

<weaveDependency>
説明
<weaveDependency> には、[MyProject] で作成したアスペクトの weaving 対象となる Maven2 プロジェクト([Ligrary A])を指定します。 [MyProject] 内(もしくはその成果物を使うプロジェクト)で [Library A] 内のクラスを使用する場合、[MyProject] 内で作成されたアスペクトを「織り込まれた」クラスを使用することになります。
ajc では
AspectJ compiler & weaver*1 である「ajc」では、-inpath オプションと同じ役割をします。
使用方法
POM ファイルの設定は以下の2箇所です:
- ライブラリへの依存性の追加
- <weaveDependency> 要素の追加
「aspectjrt」への依存性も忘れずに。
<project> ... <dependencies> <!-- aspectjrt への依存性 --> ... <!-- ここを追加 --> <dependency> <groupId>org.lib</groupId> <artifactId>LibraryA</artifactId> <version>1.0</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>aspectj-maven-plugin</artifactId> <configuration> <!-- ここを追加 --> <weaveDependencies> <weaveDependency> <groupId>org.lib</groupId> <artifactId>LibraryA</artifactId> </weaveDependency> </weaveDependencies> </configuration> <executions> <execution><goals><goal>compile</goal></goals></execution> </executions> </plugin> </plugins> </build> </project>
<aspectLibrary>
説明
<aspectLibrary> には、[MyProject] のクラスに「織り込みたい」アスペクトを含んだ Maven2 プロジェクト([Library B])にを指定します。
ajc では
「ajc」では、-aspectpath オプションと同じ役割をします。
使用方法
POM ファイルの設定は、<weaveDependency> 要素の場合とほとんど同じで、以下の2箇所です:
- ライブラリへの依存性の追加
- <aspectLibrary> 要素の追加
こちらも「aspectjrt」への依存性も忘れずに。
<project> ... <dependencies> <!-- aspectjrt への依存性 --> ... <!-- ここを追加 --> <dependency> <groupId>org.lib</groupId> <artifactId>LibraryB</artifactId> <version>1.0</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>aspectj-maven-plugin</artifactId> <configuration> <!-- ここを追加 --> <aspectLibraries> <aspectLibrary> <groupId>org.lib</groupId> <artifactId>LibraryB</artifactId> </aspectLibrary> </aspectLibraries> </configuration> <executions> <execution><goals><goal>compile</goal></goals></execution> </executions> </plugin> </plugins> </build> </project>