2016-03-24 351 views
0

如果我使用IDE來運行代碼,一切正常。 enter image description here使用ant編譯時Aspectj不工作

但是當我使用ant編譯代碼時,Aspectj的代理不起作用。 我的Ant目標

<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> 

Java代碼:

@Around("execution(* *.*(..)) && @annotation(com.xyz.MonitorMethod)") 
public Object check(ProceedingJoinPoint pjp) throws Throwable { 
    try { 
     return pjp.proceed(); 
    } finally { 
     System.out.println("======================222"); 
    } 
} 

在這個目標的任何問題?謝謝。 我想要使用Ajc11CompilerAdapter (javac)

回答

0

您沒有在您的螞蟻目標中運行ajc,只是標準javac

請參考ajcant task documentation

編輯:(上市從上面的頁面粗步):

  • 添加aspectjtools.jar到Ant的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

(我不能告訴你爲什麼會通過它作爲命令行參數,並把它定義爲屬性內的腳本)

+0

其實我想用Ajc11CompilerAdapter(javac),你有任何想法如何關注這個文檔? https://eclipse.org/aspectj/doc/next/devguide/antTasks-adapter.html – Bensson

+0

謝謝,我會做一些調查。 – Bensson

+0

@diginoise你能幫我嗎,這個問題http://stackoverflow.com/questions/38930247/when-run-ant-script-aspectj-not-import-aspect-source-folder-out-side-java-class – uma

相關問題