java - 我的 (AspectJ) jar 无法识别联合剪切

标签 java jar aop aspectj

环境:简单的 Java 独立应用程序。里面有 AspectJ jar。

我有两个项目。第一个“A”包含一个自定义方法范围注释和一个方面,该方面负责在调用该方法时执行某些任务。

注释:

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface AccessibleForRole {

    String value() ;

}

方面:

public aspect AccessibleListener {

pointcut verifyRole(): 
    (
            call(@AccessibleForRole * *())          
    );

    before() : verifyRole() { // do something
    }
}

我已经用这些注释/方面创建了一个 jar 文件。

之后,我在项目 A 中创建一个模型类。我用注释注释了一个方法,运行程序,我看到方面捕获了事件并正在处理。

public class Model {

    @AccessibleForRole("admin")
    public void addUserToApplication(){
        System.out.println("in Model.addUserToApplication.");
    }
}

它工作正常......但是...... 如果我创建第二个项目,使用 jar 'A' 项目 'B',并使用我注释的方法创建新类(例如,与模型相同),似乎没有什么特别的情况发生。什么也没被捕获。

将来是否可以创建一些必须用 AspectJ 从项目 A jar 中捕获的东西,而无需重新编译?

提前致谢,

最佳答案

问题已解决。 感谢 Maven 插件:http://mojo.codehaus.org/aspectj-maven-plugin/libraryJars.html

<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>

我输入:

<aspectLibraries>
    <aspectLibrary>
       <groupId>myGroupId</groupId>
       <artifactId>jarA</artifactId>
    </aspectLibrary>
</aspectLibraries>

并且在构建或运行时,项目 B 中的代码被 jarA 中定义的切面正确拦截。

我希望这会有所帮助。

关于java - 我的 (AspectJ) jar 无法识别联合剪切,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9343671/

相关文章:

java - 具有 super 方法调用的继承方法的切入点

java - 如何通过 Java EE Web 应用程序将文件存储在服务器(Web 容器)上?

java - 与线程同步

java - Poloniex api 也将我们带到安全检查页面

java - OSGi 包从非包 jar : create bundles for them? 导入包

Java:Spring AOP 和重构

带有注解的 Java 面向方面编程

java - 如何在另一个类适配器中访问给定适配器的 onBindViewHolder 项?

java - PHP exec() 在执行 java -jar 命令时返回空数组(无输出)

python - 使用笔记本时将jar添加到pyspark