2011-09-09 2 views
1

Je me suis cogné la tête pendant deux jours pour intégrer AspectJ avec Maven, mais n'a pas fonctionné. J'écris un programme simple avec deux conseils (qui fonctionne bien en éclipse, donc je suis sûr que ce n'est pas une erreur côté code).Impossible d'intégrer AspectJ avec Maven

J'ai récemment commencé à utiliser maven pour la construction de projets. Je ne peux pas penser à pourquoi je ne suis pas capable de lancer le compilateur Aspectj.

Lors de la compilation via maven - je n'ai que le fichier de classe pour Java sans tissage. Le fichier .aj n'est pas compilé.

S'il vous plaît Aidez-moi !!!!

le premier fichier d'image - 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"; 

} 

Le paquet java fichier source de HelloWorldExclude.java de 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"); 
     } 
    } 
} 

et le fichier pom.xml est

<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> 

Répondre

0

Il y avait une erreur stupide dans le fichier pom. aspectj plugin a été ajouté sous élément, qui est juste une configuration de tous les plugins. Il ne dit pas au compilateur ce qu'il faut utiliser.

Cela a fonctionné dès que j'ai retiré le plugin de cet élément.

Merci Pankaj

0

Un certain nombre de choses que vous pouvez essayer:

  • fournissent Explicitement les dépendances du plugin 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> 
    

avec la version de aspectjrt et aspectjtools correspondant à la version d'aspectj que vous utilisez.

  • Avez-vous, par hasard, ont l'une de vos sources dans le dossier test, avec le dossier src/test, puis à tisser les aspects aux sources de test que vous devrez mentionner explicitement que dans le maven- plug-in aspectj:

      <executions> 
          <execution> 
           <goals> 
            <goal>compile</goal> 
            <goal>test-compile</goal> 
           </goals> 
          </execution> 
         </executions> 
    
Questions connexes