使用ant进行编译时,Aspectj无法正常工作

时间:2016-03-24 13:14:27

标签: java ant aspectj

如果我使用IDE运行代码,一切正常。 enter image description here

但是当我使用ant编译代码时,Aspectj的代理并不起作用。 我的蚂蚁目标

router.parent.navigate(['User'])

Java代码:

   <property name="ajc.adapter" value="org.aspectj.tools.ant.taskdefs.Ajc11CompilerAdapter"/> 
   <target name="compile" description="compile all files">
    <mkdir dir="WebContent/WEB-INF/classes" />
       <javac
           debug="true"
           srcdir="src"
           destdir="WebContent/WEB-INF/classes"
           classpathref="classpath"
           deprecation="true"
           source="1.6"
           target="1.6"
           optimize="true">
           <include name="**/*.java" />
           <compilerarg compiler="${ajc.adapter}" line="-verbose -Xlint -proceedOnError"/>
           <compilerarg compiler="${ajc.adapter}" value="-classpath"/>
           <!--<compilerarg value="-Xlint:deprecation"/>-->
           <!--<compilerarg value="-Xlint:unchecked"/>-->
       </javac>
    <!-- Copy the properties files. -->
    <copy todir="WebContent/WEB-INF/classes">
        <fileset dir="src">
            <include name="**/*.properties" />
        </fileset>
    </copy>
    <!-- Copy the XML files -->
    <copy todir="WebContent/WEB-INF/classes">
        <fileset dir="src">
            <include name="**/*.xml" />
        </fileset>
    </copy>
</target>

此目标中是否有任何问题?谢谢。 我想用Ajc11CompilerAdapter (javac)

1 个答案:

答案 0 :(得分:2)

您的蚂蚁目标中根本没有ajc,只是标准javac

请参阅ajc ant task documentation

编辑:(列出上页中的粗略步骤):

  • aspectjtools.jar添加到a​​nt的lib目录
  • 使用以下内容修改您的javac目标,以获得指导:

     <property name="ajc"
         value="org.aspectj.tools.ant.taskdefs.Ajc11CompilerAdapter"/>
    
     <javac srcdir="src" includes="org/aspectj/**/*.java" destdir="dest" >
         <compilerarg compiler="${ajc}" line="-argfile src/args.lst"/>
     <javac/>
    
  • 运行构建脚本,传递build.compiler属性,其值为适配器类的完全限定名称:
    Ant -Dbuild.compiler=org.aspectj.tools.ant.taskdefs.Ajc11CompilerAdapter

(我无法告诉你为什么要将它作为命令行参数传递并将其定义为脚本中的属性)