我显然是唯一能够回答我自己问题的人.
我已经使用Maven Antrun Plugin通过ant编译AspectJ.这是我的pom片段:
maven-antrun-plugin
1.4
org.aspectj
aspectjtools
${aspectj.version}
ajc-compile
process-classes
value="${project.basedir}/src/main/aspect" />
value="${project.build.outputDirectory}" />
value="${project.build.directory}/aspectj-classes" />
run
ajc-test-compile
process-test-classes
value="${project.basedir}/src/test/aspect;${project.basedir}/src/main/aspect" />
value="${project.build.testOutputDirectory}" />
value="${project.build.directory}/aspectj-test-classes" />
run
我首先编译java类(让APT做它的东西),使用编译的类作为aspectj的二进制输入,将aspectj编译到一个新文件夹中,并将生成的编织类移动到原始的编译目录,覆盖非aspectj类.这是我的ant XML文件(很好的部分是我可以将它用于编译和测试编译):
classname="org.aspectj.tools.ant.taskdefs.AjcTask"
name="iajc" classpathref="classpath" />
sourceroots="${aspectj.sourcepath}"
inpath="${aspectj.binarypath}"
destdir="${aspectj.targetpath}"
classpathref="classpath"
source="1.6"
target="1.6"
/>
在下一步中,我现在已经创建了一个Maven插件,可以在内部完成所有这些蚂蚁调用.虽然我不能在这里分享代码,但我将展示它如何简化POM配置:
com.myclient.maven.plugins
maven-ajc-plugin
1.0-SNAPSHOT
compile-ajc
compile
testcompile-ajc
test-compile
${project.basedir}/src/main/aspect
使用ANT / GMaven integration,可以很容易地组合Maven,Groovy和Ant的功能.