2011-09-09 11 views
1

私はmavenとaspectjを統合するために頭を2日鳴らしましたが、うまくいきませんでした。 私は2つのアドバイスで簡単なプログラムを書いています(これはEclipseでうまくいきますので、コード側のエラーではないと確信しています)。AspectJをMavenと統合することができません

私は最近、プロジェクトビルドにmavenを使用し始めました。私はaspectjコンパイラを起動できない理由を考えることができません。

mavenによるコンパイル中に、私は織りなすことなくjava用のクラスファイルのみを取得します。 .ajファイルはコンパイルされません。

助けてください!!!!

第一の態様ファイル - ExceptionAspects.aj

package com.aspectSample; 

public aspect ExceptionAspects { 

pointcut ExceptionHandler(Exception e) : handler(Exception+) && args(e) && within(com.clickable.*); 
pointcut callbeforeMethod():execution(public void HelloWorldExclude.*(..)) ; 

before(Exception ex) : ExceptionHandler(ex) 
{  
    System.out.println("Added Aspects before Exception :"+ex.toString()); 
} 

before(): callbeforeMethod() 
{ 
    System.out.println("Aspect Before Method Call"); 
} 


pointcut sysOutOrErrAccess() : get(* System.out) || get(* System.err); 

declare error 
    : sysOutOrErrAccess() 
    : "Don't write to the console"; 

} 

ソースJavaファイルHelloWorldExclude.java パッケージcom.aspectSample。

import java.sql.SQLException; 

    public class HelloWorldExclude { 

private void FoulIntro(String message, String name) throws SQLException 
    { 
     throw new SQLException("WriteSomething"); 
    } 

public void GiveMeFoulIntro(String message, String name) 
    { 
     try 
     { 
      this.FoulIntro(message, name); 

     }catch(SQLException exp) 
     { 
      System.out.println("catching exception"); 
     } 
    } 
} 

とpom.xmlファイルあなたが試すことができます物事のカップル

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 
<groupId>com.clickable.HelloWorld-Maven</groupId> 
<artifactId>HelloWorldAspect-Maven</artifactId> 
<version>1.0.0</version> 
<name>HelloWorld Aspect</name> 
<packaging>jar</packaging> 
<description>Hello World Code</description> 
<properties> 
    <java-version>1.6</java-version> 
    <org.aspectj-version>1.6.11</org.aspectj-version> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 
</properties> 

<build> 
    <pluginManagement> 
     <plugins> 
      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>aspectj-maven-plugin</artifactId> 
       <version>1.4</version> 
       <executions> 
        <execution> 
         <goals> 
           <goal>compile</goal>        
         </goals> 
        </execution> 
       </executions> 
       <configuration> 
       <source>${java-version}</source> 
       <target>${java-version}</target> 
       </configuration> 
      </plugin> 
     </plugins> 
    </pluginManagement> 
</build> 
<dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.5</version> 
     <scope>test</scope> 
    </dependency> 

    <dependency> 
     <groupId>org.aspectj</groupId> 
     <artifactId>aspectjrt</artifactId> 
     <version>${org.aspectj-version}</version> 
    </dependency>  
</dependencies> 
</project> 

答えて

0

ポンポンファイル内の愚かな間違いがありましたが。 aspectjプラグインが要素の下に追加されました。これはすべてのプラグインの構成です。コンパイラに何を使うべきかを知らせません。

この要素からプラグインを削除するとすぐに機能しました。

ありがとう パンカイ

0

です:

  • は、明示的にMaven-AspectJのプラグインの依存関係を提供します。

    <plugin> 
         <groupId>org.codehaus.mojo</groupId> 
         <artifactId>aspectj-maven-plugin</artifactId> 
         <version>1.4</version> 
         <dependencies> 
          <dependency> 
           <groupId>org.aspectj</groupId> 
           <artifactId>aspectjrt</artifactId> 
           <version>${aspectj.version}</version> 
          </dependency> 
          <dependency> 
           <groupId>org.aspectj</groupId> 
           <artifactId>aspectjtools</artifactId> 
           <version>${aspectj.version}</version> 
          </dependency> 
         </dependencies> 
    

と、使用しているaspectjのバージョンと一致するaspectjttおよびaspectjtoolsのバージョン。

  • は、万が一、あなたを行い、その後、テストソースに側面を織るために、SRC/testフォルダに 、テストフォルダにあなたのソースのいずれかを持っているあなたは、明示的maven-でそれを言及する必要がありますAspectJのプラグイン:

      <executions> 
          <execution> 
           <goals> 
            <goal>compile</goal> 
            <goal>test-compile</goal> 
           </goals> 
          </execution> 
         </executions> 
    
関連する問題