2012-01-03 4 views
0

저는 표준 Maven 전쟁 레이아웃으로 webapp로 컴파일되는 단일 maven 프로젝트를 보유하고 있습니다. 동일한 프로젝트에 애스펙트를 추가하려고하지만 Tomcat에 전쟁으로 배포 할 때 애스펙트가 트리거되지 않습니다. 나는 단지로 프로젝트를 배포하는 경우, 측면에 킥. 여기전쟁 프로젝트에서 AspectJ와 maven을 사용하는 방법은 무엇입니까?

내 pom.xml 파일은

```

<groupId>in.sheki</groupId> 
<artifactId>abc-service</artifactId> 
<packaging>war</packaging> 
<name>abc-service</name> 

<properties> 
    <aspectj.version>1.6.12</aspectj.version> 
</properties> 

<build> 
    <finalName>abc-service</finalName> 

    <plugins> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>aspectj-maven-plugin</artifactId> 
      <version>1.4</version> 
      <configuration> 
       <complianceLevel>1.6</complianceLevel> 
      </configuration> 
      <executions> 
       <execution> 
        <phase>process-sources</phase> 
        <goals> 
         <goal>compile</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.3.2</version> 
      <configuration> 
       <source>1.6</source> 
       <target>1.6</target> 
       <encoding>UTF-8</encoding> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 
<dependencies> 
    <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> 
    .... 
</dependencies> 
</project> 

```

가로 세로처럼 보이는 방법 프로젝트의 패키지 중 하나에서 @Aspect 주석이있는 JavaClass로 정의됩니다.

무엇이 잘못 될 수 있습니까?

전쟁을 만들려면 mvn clean install을하고 전쟁을 webapps 디렉토리로 이동하십시오. Jar를 만들 때 어셈블리 플러그인을 Main Class와 함께 사용합니다. HTTP 서비스를 시작하지 않지만 내 코드에서 다른 프로세스를 시작합니다.

+0

Tomcat에 배포 할 때 어떻게합니까? 'mvn install'을 실행하고'target/.. war'을 webapp에 복사합니까? 그리고 당신은 어떻게 "프로젝트를 jar로 배포"합니까? –

+0

은 질문 자체에서 귀하의 질문에 답변했습니다. – sheki

+0

일반적인 제안 :'mvn -X clean install'을 실행하여 전쟁 중 일어나는 일을 확인하십시오. 'aspectj-maven-plugin'이하고있는 것을 보아라. (아마도 여기에 상대적인 Maven 로그를 게시한다.) –

답변

0

Tomcat (또는 내가 아는 한 다른 웹 컨테이너)에 배포 된 Wars는 relection 프로세스를 통해 호출 된 메소드를 가지며 그런 식으로 "call()"포인트 컷을 트리거하지 않습니다. "call()"을 "execution()"으로 전환 해보십시오.화물을 통해 배치를 처리하는 maven이있는 Jonas에서 나를 위해 일했습니다.

관련 문제