【发布时间】:2014-05-31 08:41:38
【问题描述】:
我有一个使用标准 Maven 战争布局编译为 webapp 的 Maven 项目。 我正在尝试向同一个项目添加方面,但是当部署为对 Tomcat 的战争时,这些方面不会被触发。如果我将项目部署为 jar,这些方面就会发挥作用。
这是我的 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?以及如何“将项目部署为 jar”? -
在问题本身中回答了您的疑问。
-
一般建议:尝试运行
mvn -X clean install以查看在战争构建期间会发生什么。看看aspectj-maven-plugin在做什么(也许在这里发布相关的 maven 日志)。
标签: java maven aop aspectj war