2013-08-28 91 views
0

我們的項目使用AspectJ。它在Eclipse IDE中工作良好,因爲它是Eclipse IDE中的AspectJ項目(在類路徑中具有AspectJ Runtime) 但是,如果我們使用ant在UNIX中構建項目,它不起作用。我已經看到一些文章提到ivy目標,我正在尋找更多關於如何配置我的AspectJ項目以使用Ant來構建它的細節。如何使用Ant使用AspectJ構建項目

回答

0

一些谷歌搜索後,我發現我需要在META-INF下創建aop.xml並將aspectjweaver.jar添加到ant build.properties中的jvm選項。自從我看到這些方法被截取後,這個方面似乎有效。但我發現下面的異常在啓動時:

ERROR org.aspectj.weaver.bcel.BcelWorld - Unable to find class 'Object' in repository java.lang.ClassNotFoundException: Object not found - unable to determine URL at org.aspectj.apache.bcel.util.ClassLoaderRepository.loadClass(ClassLoaderRepository.java:292) ~[aspectjweaver.jar.0:1.7.3] at org.aspectj.weaver.bcel.BcelWorld.lookupJavaClass(BcelWorld.java:402) [aspectjweaver.jar.0:1.7.3] at org.aspectj.weaver.bcel.BcelWorld.resolveDelegate(BcelWorld.java:376) [aspectjweaver.jar.0:1.7.3] ...

我@Aspect類看起來是這樣的:

@Aspect 
public class CaseInsensitiveEqualsAspect { 

    @Pointcut("call(boolean equals(Object)) && args(compareString) && target(sourceString) && within(com.sample.package..*)") 
    public void equalsPointcut(final Object compareString, final String sourceString) {} 


    @Around("equalsPointcut(compareString, sourceString)") 
    public Object around(final ProceedingJoinPoint joinPoint, final Object compareString, final String sourceString) 
      throws Throwable { 
     System.out.println(">>>>>>>>>>>>>>>>Invoking equalsIgnoreCase..."); 
     return sourceString.equalsIgnoreCase(compareString != null ? compareString.toString() : null); 
    } 
}