我正在尝试使用javac将一组java文件编译为.class文件,然后使用iajc编译并编织所有方面。我的ant build.xml看起来像这样。
编译部分:
<target name="compile" depends="init" description="compile the source ">
<!-- Compile the java code from ${src} into ${target} -->
<javac srcdir="${src}" destdir="${target}" debug="true">
<classpath refid="project.class.path" />
</javac>
</target>
iajc部分:
<target name="aspects">
<mkdir dir="dist"/>
<iajc source="1.6" target="${asptarget}">
<inpath>
<pathelement location="${target}"/>
</inpath>
<sourceroots>
<fileset dir="${src}">
<include name="**/*.aj"/>
</fileset>
</sourceroots>
<classpath>
<pathelement location="${aspectj.home}/lib/aspectjrt.jar"/>
</classpath>
</iajc>
</target>
根据错误消息判断,我没有说明这一点。源根本错了! 如何使用aspectj编译.aj文件,然后二进制编译类文件和编译的.aj文件?如果没有重新编译所有原始java源代码,这是否可能?
答案 0 :(得分:1)
如果要使用常规编译器构建.java文件,使用iajc构建.aj文件,请执行以下操作:
<target name="aspects" depends="compile" description="build binary aspects">
<fileset id="ajFileSet" dir="${src}" includes="**/*.aj"/>
<pathconvert pathsep="${line.separator}" property="ajFiles" refid="ajFileSet"/>
<echo file="${src}/aj-files.txt">${ajFiles}</echo>
<iajc source="1.6" target="${asptarget}">
<argfiles>
<pathelement location="${src}/aj-files.txt"/>
</argfiles>
<classpath>
<pathelement path="${target}"/>
<fileset dir="lib" includes="**/*.jar"/>
</classpath>
<classpath>
<pathelement location="${aspectj.home}/lib/aspectjrt.jar"/>
</classpath>
</iajc>
</target>
通过构建包含.aj文件列表并编译它们的文件来完美地工作。然后,您可以使用运行时OR二进制编织来完成该过程。