AspectJ编织maven模块

Mar*_*ark 12 maven-2 aspectj

我有一个项目有多个maven模块,其中一个包含我的方面.我如何处理方面并编织多个maven模块?AspectJ Maven插件的文档有点稀疏,但未能找到很多示例.

我已经尝试将aspectj插件放在父pom中,但它似乎不适用于它下面的模块的建议.

我也尝试过指定aspectsDirectory属性,但它似乎没有任何影响.也许我做错了?

Sea*_*oyd 18

我认为这个机制在这个页面上得到了很好的解释:

使用Aspect库

基本上:

您将所有方面放在一个项目中,使用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>
Run Code Online (Sandbox Code Playgroud)

丑陋的部分是:您需要将此配置添加到每个项目,因此一种可能性是使用父pom.不幸的是,它必须与aspect项目处于同一级别(因为pom无法定义对它下面的项目的依赖),所以你有这样的东西

    ------- root --------
   /                     \
aspects   -------- java-parent ----
         /     /     |      |      \
      java1  java2  java3  java4  java5
Run Code Online (Sandbox Code Playgroud)

或者甚至喜欢这个

       ------- root ---------
      /                       \
aspect-parent            --- java-parent ---
  /        \            /     |      |      \
aspects1 aspects2     java1  java2  java3  java4 
Run Code Online (Sandbox Code Playgroud)

您需要将<dependency>aspectj和pluj插件配置添加到java-parent项目的pom中