用于java 8的aspectj maven插件能够运行时编织方面但不能编译时间

时间:2016-05-18 00:23:06

标签: java maven aspectj

这是我对java 8的aspectj maven插件的配置:

<plugin>
       <groupId>org.codehaus.mojo</groupId>
       <artifactId>aspectj-maven-plugin</artifactId>
       <version>1.8</version>
       <configuration>
                <showWeaveInfo>true</showWeaveInfo>
                <source>1.8</source>
                <target>1.8</target>
                <Xlint>ignore</Xlint> 
                <complianceLevel>1.8</complianceLevel>
                <encoding>UTF-8</encoding>
                <verbose>false</verbose>
                <aspectLibraries>
                    <aspectLibrary>
                        <groupId>external project containing aspects</groupId>
                        <artifactId>external project containing aspects</artifactId>
                    </aspectLibrary>
                </aspectLibraries>
       </configuration>
       <executions>
         <execution>    
           <goals>
             <goal>compile</goal>
             <goal>test-compile</goal>
           </goals>
         </execution>
       </executions>
       <dependencies>
        <dependency>
           <groupId>org.aspectj</groupId>
           <artifactId>aspectjtools</artifactId>
           <version>1.8.7</version>
         </dependency>
       </dependencies> 
  </plugin>

当我添加如下所示的surefire插件时,我能够在加载时编织方面。

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-surefire-plugin</artifactId>
   <configuration>
<argLine>javaagent:${user.home}/.m2/repository/org/aspectj/aspectjweaver/1.8.7/aspectjweaver-1.8.7.jar</argLine>
    </configuration>
 </plugin>

为了确保我的方面被击中,我在其中添加了println语句。但是在尝试进行编译时编织时,它们并没有显示在控制台上。请帮我。我不知道我的配置中缺少什么。无法弄清楚为什么方面没有被击中。

1 个答案:

答案 0 :(得分:0)

配置没有问题。问题是,我的方面被定义为抽象,其具体实现在aop.xml文件中。这就是他们在编译时没有加载的原因。所以我把它们作为具体方面,并且有效。