java - 如何让 AspectJ 和 Maven 参与 War 项目?

标签 java maven aop aspectj war

我有一个 Maven 项目,它编译为 webapp,具有标准 Maven war 布局。 我正在尝试向同一个项目添加方面,但当部署为 Tomcat 上的 war 时,这些方面不会被触发。如果我将项目部署为 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。

我可能做错了什么?

要创建 war ,我执行mvn clean install并将 war 移至webapps目录。 为了创建 Jar,我使用带有主类的程序集插件,这不会启动 HTTP 服务,而是启动代码中的其他进程。

最佳答案

确保您有一个名为 war.bundle 的属性

正确

看看http://maven.apache.org/maven-1.x/plugins/aspectj/

如果您在没有 spring 的情况下运行,那么您可能需要 aop.xml,如中所述 http://ganeshghag.blogspot.in/2012/10/demystifying-aop-getting-started-with.html

关于java - 如何让 AspectJ 和 Maven 参与 War 项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8716118/

相关文章:

java - Spring AOP 命名切入点到底是如何工作的?有何用途?

java - 如何将两种不同的列表类型序列化/反序列化为单个顺序文件

使用有效指针从 C 调用方法后出现 Java JNI NullPointerException

java - ClassNotFoundException oracle.jdbc.driver.OracleDriver

java - 如何通过命令行运行Maven/Gradle Web项目?

java - Maven Java EE 配置

java - 使用正则表达式在一个空格处拆分字符串

java - MongoDB 新手。创建集合时出错

java - 为什么我需要一个公共(public)方法来使我的注释起作用?

vb.net - Postsharp 方面可以用在网站项目上吗?