Java aspectj maven插件,声明如何编译

Java aspectj maven插件,声明如何编译,java,maven,aspectj,aspectj-maven-plugin,Java,Maven,Aspectj,Aspectj Maven Plugin,是否可以仅使用aspectj maven插件在项目中编译带有软化异常(例如:declare soft:Exception:execution(**.*);)方面的项目?我不能处理它。。。我仍然得到编译错误 unreported exception Exception; must be caught or declared to be thrown 因此,它是在不考虑方面的情况下编写的 我正在使用此命令编译: mvn clean aspectj:compile 我的pom.xml是: <

是否可以仅使用aspectj maven插件在项目中编译带有软化异常(例如:
declare soft:Exception:execution(**.*);
)方面的项目?我不能处理它。。。我仍然得到编译错误

unreported exception Exception; must be caught or declared to be thrown
因此,它是在不考虑方面的情况下编写的

我正在使用此命令编译:

mvn clean aspectj:compile
我的pom.xml是:

<project>
<modelVersion>4.0.0</modelVersion>
<groupId>pl.group.id</groupId>
<artifactId>aop</artifactId>
<version>1.0.0</version>

<dependencies>

    <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjrt</artifactId>
        <version>1.7.4</version>
    </dependency>

    <dependency>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
    </dependency>


</dependencies>

<build>

    <plugins>

        <plugin>


            <groupId>org.codehaus.mojo</groupId>
            <artifactId>aspectj-maven-plugin</artifactId>
            <version>1.6</version>
            <configuration>
                <complianceLevel>1.7</complianceLevel>
                <source>1.7</source>
                <target>1.7</target>
                <aspectDirectory>src/main/aspect</aspectDirectory>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>compile</goal>
                        <goal>test-compile</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

    </plugins>
</build>
</project>

4.0.0
pl.group.id
aop
1.0.0
org.aspectj
aspectjrt
1.7.4
org.apache.maven.plugins
maven编译器插件
3.1
org.codehaus.mojo
aspectj maven插件
1.6
1.7
1.7
1.7
src/main/aspect
编译
测试编译

我做错了什么

实际上,我认为Maven编译器插件3.0和3.1中存在一个bug,因为对我来说,它与插件版本2.5.1一起工作。似乎增量编译被破坏了,或者相应的开关
useIncrementalComplation
在3.1中引入后,在某种程度上意外地颠倒了其含义。有趣的是,将其值设置为
false
为我解决了这个问题。降级到2.5.1也可以。在这两种情况下,我都需要将AspectJ Maven插件的阶段更改为
processsources
,如user@Gus链接的问题中所述

解决方案A:


4.0.0
de.scrum-master.stackoverflow
aspectj软异常
1.0-快照
UTF-8
1.8.0
带有declare soft的AspectJ示例
演示如何使用Maven的“declare soft”构建AspectJ项目
maven编译器插件
3.1
1.7
1.7
假的
org.codehaus.mojo
aspectj maven插件
1.6
真的
1.7
1.7
忽视
1.7
UTF-8
真的
过程源
编译
测试编译
org.aspectj
aspectjtools
${aspectj.version}
org.aspectj
aspectjrt
${aspectj.version}
运行时
解决方案B:


4.0.0
de.scrum-master.stackoverflow
aspectj软异常
1.0-快照
UTF-8
1.8.0
带有declare soft的AspectJ示例
演示如何使用Maven的“declare soft”构建AspectJ项目
maven编译器插件
2.5.1
1.7
1.7
org.codehaus.mojo
aspectj maven插件
1.6
真的
1.7
1.7
忽视
1.7
UTF-8
真的
过程源
编译
测试编译
org.aspectj
aspectjtools
${aspectj.version}
org.aspectj
aspectjrt
${aspectj.version}
运行时

这个问题有用吗?是的,这似乎是我需要的。如果您愿意,请将其作为答案发布:)我不知道我怎么会错过它…是的,更改maven aspectj插件的执行阶段解决了问题。不,执行阶段在所有情况下都是不够的,您还必须使用
useIncrementalComplation=false
。我已经将我的示例Maven+AspectJ项目添加到和中,以便修复此问题。更新的链接是和,因为Codehaus不再存在,Maven编译器插件现在是一个Apache项目。