2012-08-05 148 views
1

我正试图将现有的(web)项目迁移到roo。经过一些痛苦的时间迁移我的maven-settings roo开始喜欢我的项目,我可以运行我的单元测试。到现在为止还挺好。Spring Roo和AOP

在我的项目中,我使用spring-aop来做一些安全性,所有代理都没有编译器。在eclipse中启动我的webapp时,它告诉我,有些类缺失,f.e. org.aspectj.lang.annotation.Aspect。

当我查看我的classpath时,所有的aspectj.jar-stuff都从classpath中删除。我想这是因为Roo使用Aspectj-Compiler来添加AOP,并且不需要运行时编织。那么迁移我现有的aop-code的正确方法是什么?我应该告诉Roo/Maven将所有aspectj-jar添加到我的webapp-lib文件夹,还是应该将aop迁移到编译时编织?

有什么答案,我该怎么做?

  1. 在我的pom.xml也有一些相关性: 代码:

    <dependency> 
        <groupId>org.aspectj</groupId> 
        <artifactId>aspectjrt</artifactId> 
        <version>${aspectj.version}</version> 
    </dependency> 
    <dependency> 
        <groupId>org.aspectj</groupId> 
        <artifactId>aspectjweaver</artifactId> 
        <version>${aspectj.version}</version> 
    </dependency> 
    

我真的不知道在哪里所有的袋鼠,Maven的东西,奇迹发生了对AspectJ中被删除来自日食类路径。那么,我需要改变什么才能在类路径中保留这些罐子?

  1. 我的方面是这样的,并适用于使用运行时编织时: 代码:

    @Aspect 
    public class SecurityAspect { 
        @Around("execution(@AuthorizedMethod public * de.diandan.web.controller.*.*(..))") 
        public Object checkRights(ProceedingJoinPoint jp) throws Throwable { 
        } 
    

我有什么做的,告诉AspectJ来织在编译时这方面?

问候, 迈克尔

回答

0

所以,我花时间对问题进行分析后,它似乎不是原产地规则本身从classpath中删除AspectJ的罐子,但在Eclipse的插件正矢量2.7(这是由命令尊崇> roo项目)。我不知道这是一个bug还是一个功能,但是使用该插件创建一个eclipse-project删除了那个jar。切换到2.8解决了问题。

因此,作为答案: - >使用进一步运行时编织 - >神奇的发生在Eclipse的插件