我有一個單獨的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服務,而是啓動我的代碼中的其他進程。
當你部署到Tomcat時,你如何做到這一點?你運行'mvn install',然後將'target/.. war'複製到webapps?你如何「將項目部署爲罐子」? – 2012-01-03 18:20:25
在問題本身中回答了您的問題。 – sheki 2012-01-04 04:08:20
作爲一般建議:嘗試運行'mvn -X clean install'來查看在構建戰爭期間會發生什麼。查看'aspectj-maven-plugin'正在做什麼(可能在這裏發佈相關的maven日誌)。 – 2012-01-04 10:32:48