小编Yar*_*iev的帖子

Javac + Lombok 阶段后如何使用 AspectJ Maven 进行二进制编织

我有一个使用编译方面并在编译时编织它们的项目。我想添加 Lombok,但不幸的是 Lombok 不支持 AJC。由于该项目本身没有任何方面的来源,因此在使用 Javac+Lombok 编译后,我将 AspectJ Maven 插件配置为进行编译后编织。

这是 AspectJ Maven 插件的配置:

<forceAjcCompile>true</forceAjcCompile>
<sources/>
<weaveDirectory>${project.build.outputDirectory}</weaveDirectory>
Run Code Online (Sandbox Code Playgroud)

它在 Maven Compiler 插件编译后立即附加到编译阶段。这样 Lombok + Javac 将首先被调用,然后 AJC 将在 Javac 生成的类文件上执行编织。

在 javac 生成的类上执行字节码编织时是否有任何限制/缺点?

也许有更好的方法可以让 Maven+Lombok+Aspects+Idea 一起工作而不会出现问题。

这是一个最小的示例项目:https : //github.com/Psimage/aspectj-and-lombok

java aspectj maven lombok aspectj-maven-plugin

3
推荐指数
1
解决办法
1751
查看次数

使用maven-compiler-plugin和aspectj-maven-plugin进行编译

当我使用maven-apsectj-pluginmaven-compiler-plugin compile阶段将执行两个插件compile目标。这会导致javac首先使用 进行编译,然后使用 进行完全重新编译ajc

这个双重编译有必要吗?看来我可以关掉maven-compiler-plugin一切,一切正常。

我正在使用“默认”配置,如用法中所述maven-compiler-plugin

<project>
  ...
  <dependencies>
    ...
    <dependency>
      <groupId>org.aspectj</groupId>
      <artifactId>aspectjrt</artifactId>
      <version>1.8.13</version>
    </dependency>
    ...
  </dependencies>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>aspectj-maven-plugin</artifactId>
        <version>1.11</version>
        <executions>
          <execution>
            <goals>
              <goal>compile</goal>       <!-- use this goal to weave all your main classes -->
              <goal>test-compile</goal>  <!-- use this goal to weave all your test classes -->
            </goals>
          </execution>
        </executions>
      </plugin>
      ...
    </plugins>
  <build>
  ...
</project>
Run Code Online (Sandbox Code Playgroud)

java aspectj maven aspectj-maven-plugin

1
推荐指数
1
解决办法
5230
查看次数

标签 统计

aspectj ×2

aspectj-maven-plugin ×2

java ×2

maven ×2

lombok ×1