【发布时间】:2010-11-17 17:50:27
【问题描述】:
我有一个项目,其中包含多个 Maven 模块,其中一个包含我的方面。如何获取方面并编织多个 Maven 模块? AspectJ Maven 插件的文档有点稀疏,找不到很多示例。
我已经尝试将 aspectj 插件放在父 pom 中,但它似乎没有为它下面的模块应用建议。
我也尝试指定 aspectDirectory 属性,但似乎没有任何影响。也许我做错了?
【问题讨论】:
我有一个项目,其中包含多个 Maven 模块,其中一个包含我的方面。如何获取方面并编织多个 Maven 模块? AspectJ Maven 插件的文档有点稀疏,找不到很多示例。
我已经尝试将 aspectj 插件放在父 pom 中,但它似乎没有为它下面的模块应用建议。
我也尝试指定 aspectDirectory 属性,但似乎没有任何影响。也许我做错了?
【问题讨论】:
我认为这个页面上的机制解释得很好:
基本上:
您将所有方面放在一个项目中,使用 aspectj-maven-plugin 对其进行编译,将此项目的依赖项添加到您要编织的所有项目中,并将此配置添加到编织项目中:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.3</version>
<configuration>
<aspectLibraries>
<aspectLibrary>
<groupId>your.aspects.groupId</groupId>
<artifactId>your.aspects.artifactId</artifactId>
</aspectLibrary>
</aspectLibraries>
</configuration>
<executions>
<execution>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
</plugin>
丑陋的部分是:您需要将此配置添加到每个项目中,因此一种可能性是使用父 pom.xml 。不幸的是,它必须与方面项目处于同一级别(因为 pom 无法定义对它下面的项目的依赖),所以你会有这样的东西
------- root --------
/ \
aspects -------- java-parent ----
/ / | | \
java1 java2 java3 java4 java5
甚至像这样
------- root ---------
/ \
aspect-parent --- java-parent ---
/ \ / | | \
aspects1 aspects2 java1 java2 java3 java4
您需要将 <dependency> 和 aspectj 插件配置添加到 java-parent 项目的 pom 中
【讨论】: