2012-01-03 93 views
19

我有一个项目,目前与Java 6和编译时间编织。 我们用下面的POM,使弹簧方面和我们自己的:如何启用aspectj编译时间与Java 7和编织

<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或导致它会很好。

+0

有什么症状? – 2012-01-03 20:43:47

+1

转移到版本1.7.0.M1的aspectjtools后,它开始工作 – 2012-02-16 20:48:53

回答

29

在移到aspectjtools 1.7.0版后,它工作正常。另外你需要传递编译器的版本参数为-1.7(使用参数target引起的问题)。如果有人需要更多的细节留下评论,我会添加更多配置的具体信息。
您可以从这里乘坐工作示例:Spring, AspectJ and Maven example
下面是从聚甲醛(编译器版本= “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> 
+0

你可以发布你的pom.xml吗?在1.7时,当我做一个干净的生成我得到:org.aspectj.weaver.BCException:格式不正确的org.aspectj.weaver.Declare属性(长度:45)org.aspectj.weaver.BCException:错误的类型签名。但是如果我第二次调用mvn编译,它会生成,但稍后的增强会给出一个“期望分支目标处的栈图框架”。我仍在研究这一点。 – Cojones 2012-03-13 22:34:20

+0

我刚刚移动到新发布的aspectj 1.7.0和java 1.7,并且还收到有关“期望在分支目标上使用堆栈映射帧”的错误。你有没有解决这个问题? – Jay 2012-07-15 17:40:13

+0

您是否指定了正确的aspectj和编译器版本?我每天都用它,它的效果很好。你需要哪部分pom(我会添加缺少的部分)? – 2012-07-15 22:07:24