1

我正在尝试将现有的(网络)项目迁移到 roo。在迁移了一些痛苦的小时后,我的 maven-settings roo 开始喜欢我的项目,并且我能够运行我的单元测试。到现在为止还挺好。

在我的项目中,我使用 spring-aop 来做一些安全性,全部使用代理,没有编译器。在 Eclipse 中启动我的 webapp 时,它告诉我,缺少某些类,例如 org.aspectj.lang.annotation.Aspect。

查看我的类路径时,所有aspectj.jar-stuff 都从类路径中删除。我猜那是因为 Roo 使用 Aspectj-Compiler 来添加 AOP,并且不需要运行时编织。那么迁移我现有的 aop 代码的正确方法是什么?我应该告诉 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>
    

我真的不知道从 Eclipse 类路径中删除 aspectj 的所有 roo-maven-stuff 中的魔力在哪里。那么我必须改变什么才能将这些罐子留在类路径中?

  1. 我的方面看起来像这样,并且在使用运行时编织时有效:代码:

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

我该怎么做才能告诉aspectj在编译时编织这个方面?

问候,迈克尔

4

1 回答 1

0

因此,在我花时间分析问题之后,似乎不是 Roo 本身从类路径中删除了 aspectj jar,而是 versin 2.7 中的 eclipse-Plugin(受到 command > roo 项目的尊重)。我不知道那是错误还是功能,但是使用该插件创建一个 eclipse-project 删除了该 jar。切换到 2.8 解决了这个问题。

所以作为答案:->使用进一步的运行时编织->魔术发生在eclipse-plugin中

于 2012-08-25T06:13:38.143 回答