【问题标题】:How to enable aspectj compile time weaving with Java 7 and maven如何使用 Java 7 和 maven 启用 aspectj 编译时编织
【发布时间】:2012-01-03 20:34:57
【问题描述】:

我有一个项目,目前使用 java 6 和编译时编织。 我们使用以下 pom 来启用 spring 方面和我们自己的方面:

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>aspectj-maven-plugin</artifactId>
  <version>1.4</version>
      <configuration>
        <showWeaveInfo>true</showWeaveInfo>
        <source>1.6</source>
        <target>1.6</target>
        <Xlint>ignore</Xlint>
        <complianceLevel>1.6</complianceLevel>
        <encoding>UTF-8</encoding>
        <verbose>false</verbose>
        <aspectLibraries>
          <aspectLibrary>
             <groupId>org.springframework</groupId>
             <artifactId>spring-aspects</artifactId>
          </aspectLibrary>
        </aspectLibraries>
      </configuration>
      <executions>
        <execution>
          <goals>
            <goal>compile</goal>
            <goal>test-compile</goal>
          </goals>
        </execution>
      </executions>
    </plugin>

我尝试了各种配置,但无法使其与 java 7 一起使用。 如果有人可以分享一个工作 pom 或领导,那就太好了。

【问题讨论】:

    标签: java maven aspectj


    【解决方案1】:

    升级到 aspectjtools 的 1.7.0 版后,它工作正常。另外您需要将版本参数作为-1.7 传递给编译器(使用target 参数会导致问题)。如果有人需要更多详细信息,请发表评论,我会添加更多配置特定信息。
    您可以从此处获取一个工作示例:Spring, AspectJ and Maven example
    这是 pom 中的工作插件定义 (compiler-version="1.7", aspectj.version="1.7.0")

    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>aspectj-maven-plugin</artifactId>
        <version>1.4</version>
        <configuration>
            <showWeaveInfo>true</showWeaveInfo>
            <source>${compiler.version}</source>
            <target>${compiler.version}</target>
            <Xlint>ignore</Xlint>
            <complianceLevel>${compiler.version}</complianceLevel>
            <encoding>UTF-8</encoding>
            <verbose>false</verbose>
            <aspectLibraries>
                <aspectLibrary>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-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>aspectjrt</artifactId>
                <version>${aspectj.version}</version>
            </dependency>
            <dependency>
                <groupId>org.aspectj</groupId>
                <artifactId>aspectjtools</artifactId>
                <version>${aspectj.version}</version>
            </dependency>
        </dependencies>
    </plugin>
    

    【讨论】:

    • 你能发布你的 pom.xml 吗?在 1.7 时,当我进行干净构建时,我得到: org.aspectj.weaver.BCException: malformed org.aspectj.weaver.Declare attribute (length:45)org.aspectj.weaver.BCException: Bad type signature。但是,如果我第二次调用 mvn compile,它会构建,但后来的增强功能会给出“在分支目标处期望堆栈图帧”。我还在调查。
    • 我刚刚移到新发布的 aspectj 1.7.0 和 java 1.7,并且还收到有关“在分支目标处期望堆栈图帧”的错误。你解决过这个问题吗?
    • 您是否指定了正确的 aspectj 和编译器版本?我每天都用它,效果很好。你需要 pom 的哪一部分(我会添加缺少的部分)?
    • 谢谢。您的插件配置对我有很大帮助。就我而言,它适用于 aspectj 版本 1.6.12,没有任何问题。
    猜你喜欢
    • 2014-10-02
    • 2012-11-21
    • 2014-03-07
    • 2012-04-17
    • 1970-01-01
    • 1970-01-01
    • 2013-03-18
    • 2018-04-27
    相关资源
    最近更新 更多