我在Eclipse ide中创建了一个Aspectj项目,但我需要使用maven构建它。
我有maven-aspectj插件但不知道如何使用它。
答案 0 :(得分:2)
以下是我为实现这一目标而采取的步骤。这给了我compile-time weaving。如果您需要其他策略,显然您需要另一种方法(例如Spring AOP用于运行时AOP代理)。
添加一个属性以标准化您使用的AspectJ版本:
<properties>
<aspectj.version>1.7.2</aspectj.version>
...
添加运行时依赖项:
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${aspectj.version}</version>
</dependency>
添加AspectJ Maven插件:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.4</version>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${aspectj.version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjtools</artifactId>
<version>${aspectj.version}</version>
</dependency>
</dependencies>
<configuration>
<source>1.7</source>
<target>1.7</target>
<forceAjcCompile>true</forceAjcCompile>
</configuration>
</plugin>
我不确定forceAjcCompile
是否真的很有意义,但我已经看到了某些方面未能始终如一地应用的情况。我把这个(现在)归咎于Eclipse覆盖类文件或其他东西,因此forceAjcCompile
。
我做的其他事情:
src/main/aspects
作为额外的源目录(build-helper-maven-plugin
插件)。只是因为它在Eclipse中看起来不错lifecycle-mapping
plugin)添加pluginExecution
/ pluginExecutionFilter
并将其设置为execute
和runOnIncremental
,以便方面(re - )在Eclipse中编码和测试时使用(使用m2e)