2010-11-17 5 views
10

J'ai un projet qui a plusieurs modules maven, dont un, contient mes aspects. Comment puis-je prendre les aspects et tisser plusieurs modules maven? La documentation pour le plugin AspectJ Maven est un peu éparse et n'a pas pu trouver beaucoup d'exemples.AspectJ tissage modules maven

J'ai essayé de mettre le plugin aspectj dans le pom parent mais il ne semble pas appliquer le conseil pour les modules en dessous.

J'ai également essayé de spécifier la propriété aspectsDirectory mais cela ne semblait pas avoir d'effet. Peut-être que je l'ai fait mal?

Répondre

17

Je pense que le mécanisme est expliqué assez bien sur cette page:

Using Aspect Libraries

En gros:

Vous mettez tous vos aspects dans un projet, compilez à l'aide du aspectj-maven-plugin, ajouter une dépendance à ce projet à tous les projets que vous voulez tisser et ajouter cette configuration aux projets tissés:

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>aspectj-maven-plugin</artifactId> 
    <version>1.3</version> 
    <configuration> 
     <aspectLibraries> 
      <aspectLibrary> 
       <groupId>your.aspects.groupId</groupId> 
       <artifactId>your.aspects.artifactId</artifactId> 
      </aspectLibrary> 
     </aspectLibraries> 
    </configuration> 
    <executions> 
     <execution> 
      <goals> 
       <goal>compile</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

u La partie gly est: vous devez ajouter cette configuration à chaque projet, donc une possibilité serait d'utiliser un pom parent. Malheureusement, il devrait être au même niveau que le projet aspects (parce qu'un pom ne peut pas définir une dépendance à un projet ci-dessous), donc vous auriez quelque chose comme ça

------- root -------- 
/     \ 
aspects -------- java-parent ---- 
     / / |  |  \ 
     java1 java2 java3 java4 java5 

ou même comme ce

 ------- root --------- 
    /      \ 
aspect-parent   --- java-parent --- 
/  \   / |  |  \ 
aspects1 aspects2  java1 java2 java3 java4 

Vous souhaitez ajouter à la fois la <dependency> et la configuration du plugin aspectj à la pom du projet java-parent

Questions connexes