2013-07-25 42 views
1

我有一個依賴於aspectj的java模塊。當我在java項目中使用模塊時,我只需告訴maven使用aspectj-maven-plugin(mojo)並使用ajcCompiler編譯項目。步驟是從Maven + AspectJ - all steps to configure itgrails aspectJ字節碼編織

現在我有一個grails項目,我需要在那裏使用模塊。因此,據我所知,我需要覆蓋編譯器到

ant.property(name:'build.compiler', value:'org.aspectj.tools.ant.taskdefs.Ajc11CompilerAdapter') 

in _Events.groovy:eventCompileStart closure。這是行不通的,所以還有另一個建議在eventCompileEnd上添加一個iajc任務(http://permalink.gmane.org/gmane.comp.lang.groovy.grails.user/127215

我該怎麼做到這一點?我不確定這個過程!順便說一句,我 'org.codehaus.mojo:AspectJ的行家-插件:1.4' 定義爲編譯時依賴於buildConfig.groovy

[更新]

我所限定的本在_Events.groovy

ant.taskdef(resource:"org/aspectj/tools/ant/taskdefs/aspectjTaskdefs.properties", classpath: configurations.ajc.asPath) 
ant.iajc(destDir: grails.compile.classpath, source: "1.7", target:"1.7",) { 
    classpathref(dir: classesDirPath) 
} 

這'應該'的工作,但它的理由不!我錯過了什麼?

回答

1

兩步解決方案:

定義IAJC任務:

ant.taskdef(name: 'iajc', classname: 'org.aspectj.tools.ant.taskdefs.AjcTask') 

執行IAJC任務織編譯的類

String aspectjrtPath = "path to your aspectjrt.jar" 
String classesDirPath = "path to the compiled classes you're weaving" 
ant.iajc(classpath: aspectjrtPath, destdir: classesDirPath) { 
    inpath() { 
    pathelement(path: classesDirPath) 
    } 
    aspectpath() { 
    pathelement(path: icnTraceLibrary) 
    } 
} 

這解決了我的問題,該目標現已編織與我的跟蹤框架。

相關問題