2012-01-03 68 views
0

我有一個單獨的maven項目,編譯爲webapp,具有標準的Maven戰爭版式。 我正在嘗試將方面添加到同一個項目中,但在Tomcat上部署爲戰爭時並未觸發這些方面。如果我部署項目作爲一個jar,各方面一命嗚呼如何讓AspectJ和maven在War項目上工作?

這裏是我的pom.xml看起來像

```

<groupId>in.sheki</groupId> 
<artifactId>abc-service</artifactId> 
<packaging>war</packaging> 
<name>abc-service</name> 

<properties> 
    <aspectj.version>1.6.12</aspectj.version> 
</properties> 

<build> 
    <finalName>abc-service</finalName> 

    <plugins> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>aspectj-maven-plugin</artifactId> 
      <version>1.4</version> 
      <configuration> 
       <complianceLevel>1.6</complianceLevel> 
      </configuration> 
      <executions> 
       <execution> 
        <phase>process-sources</phase> 
        <goals> 
         <goal>compile</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.3.2</version> 
      <configuration> 
       <source>1.6</source> 
       <target>1.6</target> 
       <encoding>UTF-8</encoding> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 
<dependencies> 
    <dependency> 
     <groupId>org.aspectj</groupId> 
     <artifactId>aspectjrt</artifactId> 
     <version>${aspectj.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.aspectj</groupId> 
     <artifactId>aspectjweaver</artifactId> 
     <version>${aspectj.version}</version> 
    </dependency> 
    .... 
</dependencies> 
</project> 

```

縱橫在項目的其中一個包中用@Aspect註釋定義爲JavaClass。

我做錯了什麼?

要創建一個戰爭,我做mvn clean install並將戰爭移動到webapps目錄。 爲了創建Jar,我使用帶有Main Class的程序集插件,這不會啓動HTTP服務,而是啓動我的代碼中的其他進程。

+0

當你部署到Tomcat時,你如何做到這一點?你運行'mvn install',然後將'target/.. war'複製到webapps?你如何「將項目部署爲罐子」? – 2012-01-03 18:20:25

+0

在問題本身中回答了您的問題。 – sheki 2012-01-04 04:08:20

+0

作爲一般建議:嘗試運行'mvn -X clean install'來查看在構建戰爭期間會發生什麼。查看'aspectj-maven-plugin'正在做什麼(可能在這裏發佈相關的maven日誌)。 – 2012-01-04 10:32:48

回答

0

通過重選過程調用部署在Tomcat(或任何其他Web容器)上的Wars,並且這種方式不會觸發「call()」切入點。 嘗試將你的「call()」切換到「execution()」,在Jonas上爲我工作,maven通過貨物處理部署。

相關問題