2012-01-03 9 views
0

私は標準のMavenの戦争レイアウトでwebappにコンパイルする単一のmavenプロジェクトを持っています。 私は同じプロジェクトにアスペクトを追加しようとしていますが、Tomcatの戦争としてデプロイされたときにそのアスペクトがトリガーされません。私はjarファイルとしてプロジェクトを展開する場合、側面がで蹴る。Warプロジェクトで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としてプロジェクトのパッケージの1つに定義されています。

私は間違っている可能性がありますか?

戦争を作成するには、私はmvn clean installを実行し、warをwebappsディレクトリに移動します。 Jarを作成するには、メインクラスでアセンブリプラグインを使用しますが、これはHTTPサービスを開始せず、自分のコードで他のプロセスを開始します。

+0

Tomcatにデプロイするとき、どうやってこれを行うのですか? 'mvn install'を実行して、' target/.. war'をwebappsにコピーしますか?そして、どのように「プロジェクトをjarとして展開するのですか?質問自体に –

+0

があなたの質問に答えました。 – sheki

+0

一般的な提案として: 'mvn -X clean install'を実行して、戦争の構築中に何が起こるかを見てください。 'aspectj-maven-plugin'が何をしているのかを見てください(多分相対Mavenログをここに投稿してください)。 –

答えて

0

Tomcat(または私が知っている限り他のWebコンテナ)に展開されたWarsは、relectionプロセスを通じて呼び出されたメソッドを持ち、そのようにして "call()"ポイントカットをトリガーしません。 "call()"を "execution()"に切り替えてみてください。Jonasで貨物を使ってデプロイメントを処理してくれました。

関連する問題