2012-01-03 90 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