2013-04-02 40 views
2

我想從Java運行ajc編譯器(不是來自Maven或Ant!)。問題是我需要哪個Maven依賴項以及哪個類是入口點?我現在最好的選擇是org.aspectj.tools.ajc.Mainorg.aspectj:aspectjtools:1.7.2。我對嗎?如何從Java運行ajc?

回答

4

是的。在您的Java項目中,您需要類路徑中的aspectjrt.jar(運行時)和aspectjtools.jar(用於編譯器)。然後你就可以建立一個AspectJ項目和創建包含各方面和類這樣的JAR文件:

import org.aspectj.tools.ajc.Main; 

public class AjcRunner { 
    public static void main(String[] args) throws Exception { 
     String[] ajcArgs = { 
      "-sourceroots", "c:\\my\\aspectj_project\\src", 
      "-outjar", "my_aspects.jar" 
     }; 
     Main.main(ajcArgs); 
    } 
} 

之後,您可以像這樣在控制檯上測試的結果,假設你有一個類Applicationmain方法:

java -cp C:\path\to\aspectjrt.jar;my_aspects.jar Application 
+0

感謝,我做到了完全像你所說:https://github.com/yegor256/jcabi/blob/jcabi-0.7.16/jcabi-maven-plugin/src/main/java/com/jcabi /maven/plugin/AjcMojo.java – yegor256