2012-02-18 3 views
0

Environnement : 간단한 Java 독립 실행 형 응용 프로그램. 내부 AspectJ 항아리.내 (AspectJ) jar가 조인트 컷을 인식하지 못합니다.

두 가지 프로젝트가 있습니다. 첫 번째는 'A'는 맞춤 메소드 범위 주석과 메소드가 호출 될 때 어떤 작업을 담당하는 측면을 포함한다고 말합니다.

주석 :

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

    String value() ; 

} 

가로 세로 : 나는 양태에서는 주석/측면 jar 파일을 한 적이

public aspect AccessibleListener { 

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

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

.

그런 다음 프로젝트 A에서 모델 클래스를 만듭니다. 주석을 사용하여 메소드에 주석을 달고 프로그램을 실행하면 이벤트를 잡아서 작업하는 모습을 봅니다.

public class Model { 

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

같은 내가 주석 방법 (와, 그것은 잘 작동합니다 ....하지만 .... 을 나는 두 번째 프로젝트, 프로젝트 'B' 'A'를 항아리를 사용하여 작성하는 경우, 나는 새로운 클래스를 생성 예를 들어 모델), 특별한 것은 발생하지 않는 것처럼 보입니다. 아무것도 막혔다.

미래에 프로젝트 A jar에서 AspectJ로 잡아야하는 것을 다시 컴파일하지 않고 만들 수 있습니까?

미리 감사드립니다.

+0

달성하려는 목표는 무엇입니까? – Rachel

답변

1

문제가 해결되었습니다. 메이븐 플러그인에 감사합니다 :

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

를 건물 또는 프로젝트 B의 코드가 제대로 화면에 의해 차단되어, 실행할 때 자라에서 정의 http://mojo.codehaus.org/aspectj-maven-plugin/libraryJars.html

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

나는했습니다.

도움이되기를 바랍니다.

관련 문제