我在 Eclipse ide 中创建了一个 Aspectj 项目,但我需要使用 maven 构建它。
我有 maven-aspectj 插件,但不知道如何使用它。
以下是我为使其正常工作所遵循的步骤。这给了我编译时编织。如果您需要其他策略,显然您需要另一种方法(例如用于运行时 AOP 代理的Spring 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 中看起来不错pluginExecution
/并将其设置为and ,以便在 Eclipse 中编码和测试时(使用 m2e)也(重新)应用方面pluginExecutionFilter
lifecycle-mapping
execute
runOnIncremental