Environnement:简单的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',并创建新类,使用我注释的方法(例如,相同的模型),似乎没有什么特别的。什么都没有。
是否有可能在未来创建一些必须从项目A jar中获取AspectJ的东西,而不必重新编译?
提前致谢,
答案 0 :(得分:1)
问题已解决。 感谢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中的方面定义正确拦截。
我希望这会有所帮助。