栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用Maven在同一个项目中的APT和AOP

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用Maven在同一个项目中的APT和AOP

我显然是唯一可以回答我自己的问题的人。

我已经使用Maven Antrun插件通过ant来编译AspectJ 。这是我的pom片段:

<plugin>    <artifactId>maven-antrun-plugin</artifactId>    <version>1.4</version>    <dependencies>        <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjtools</artifactId> <version>${aspectj.version}</version>        </dependency>    </dependencies>    <executions>        <execution> <id>ajc-compile</id> <phase>process-classes</phase> <configuration>     <tasks>         <property name="aspectj.sourcepath"  value="${project.basedir}/src/main/aspect" />         <property name="aspectj.binarypath"  value="${project.build.outputDirectory}" />         <property name="aspectj.targetpath"  value="${project.build.directory}/aspectj-classes" />         <property name="scope_classpath" refid="maven.compile.classpath" />         <property name="plugin_classpath" refid="maven.plugin.classpath" />         <ant antfile="ajc-ant.xml" />     </tasks> </configuration> <goals>     <goal>run</goal> </goals>        </execution>        <execution> <id>ajc-test-compile</id> <phase>process-test-classes</phase> <configuration>     <tasks unless="maven.test.skip">         <property name="aspectj.sourcepath"  value="${project.basedir}/src/test/aspect;${project.basedir}/src/main/aspect" />         <property name="aspectj.binarypath"  value="${project.build.testOutputDirectory}" />         <property name="aspectj.targetpath"  value="${project.build.directory}/aspectj-test-classes" />         <property name="scope_classpath" refid="maven.test.classpath" />         <property name="plugin_classpath" refid="maven.plugin.classpath" />         <ant antfile="ajc-ant.xml" />     </tasks> </configuration> <goals>     <goal>run</goal> </goals>        </execution>    </executions></plugin>

我首先编译Java类(并让APT负责),将编译后的类用作Aspectj的二进制输入,将Aspectj编译到新文件夹中,然后将生成的编织类移动到原始compile目录中,覆盖非aspectj类。这是我的ant XML文件(很好的部分是,我可以将其用于编译和测试编译):

<project basedir="." default="ajc">    <path id="classpath">        <pathelement path="${scope_classpath}" />        <pathelement path="${plugin_classpath}" />    </path>    <taskdef        classname="org.aspectj.tools.ant.taskdefs.AjcTask"        name="iajc" classpathref="classpath" />    <target name="ajc">        <iajc sourceroots="${aspectj.sourcepath}" inpath="${aspectj.binarypath}" destdir="${aspectj.targetpath}" classpathref="classpath" source="1.6" target="1.6"        />        <move todir="${aspectj.binarypath}"> <fileset dir="${aspectj.targetpath}">     <include name="**/*.class" /> </fileset>        </move>    </target></project>

在下一步中,我现在创建了一个Maven插件,该插件在内部完成所有这些ant调用。虽然我不能在这里共享代码,但我将展示它如何简化POM配置:

<plugin>    <groupId>com.myclient.maven.plugins</groupId>    <artifactId>maven-ajc-plugin</artifactId>    <version>1.0-SNAPSHOT</version>    <executions>        <execution> <id>compile-ajc</id> <goals>     <goal>compile</goal> </goals>        </execution>        <execution> <id>testcompile-ajc</id> <goals>     <goal>test-compile</goal> </goals> <configuration>     <aspectSourcePath>${project.basedir}/src/main/aspect</aspectSourcePath> </configuration>        </execution>    </executions>    <configuration>    </configuration></plugin>

使用ANT / GMaven集成,可以轻松组合Maven,Groovy和Ant的功能来组合参数。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/570262.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号