2013-08-28 58 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); 
    } 
}