2012-01-03 71 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通过货物处理部署。

相关问题