我有一个单独的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