如何使用maven构建aspectj项目?

时间:2013-04-26 09:49:53

标签: java maven aspectj

我在Eclipse ide中创建了一个Aspectj项目,但我需要使用maven构建它。

我有maven-aspectj插件但不知道如何使用它。

1 个答案:

答案 0 :(得分:2)

以下是我为实现这一目标而采取的步骤。这给了我compile-time weaving。如果您需要其他策略,显然您需要另一种方法(例如Spring AOP用于运行时AOP代理)。

  1. 添加一个属性以标准化您使用的AspectJ版本:

    <properties>
        <aspectj.version>1.7.2</aspectj.version>
      ...
    
  2. 添加运行时依赖项:

    <dependency>
      <groupId>org.aspectj</groupId>
      <artifactId>aspectjrt</artifactId>
      <version>${aspectj.version}</version>
    </dependency>
    
  3. 添加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>
    
  4. 我不确定forceAjcCompile是否真的很有意义,但我已经看到了某些方面未能始终如一地应用的情况。我把这个(现在)归咎于Eclipse覆盖类文件或其他东西,因此forceAjcCompile

    我做的其他事情:

    1. 添加src/main/aspects作为额外的源目录(build-helper-maven-plugin插件)。只是因为它在Eclipse中看起来不错
    2. 为AspectJ插件(lifecycle-mapping plugin)添加pluginExecution / pluginExecutionFilter并将其设置为executerunOnIncremental,以便方面(re - )在Eclipse中编码和测试时使用(使用m2e)