2010-11-17 9 views
10

Ho un progetto con più moduli Maven, uno dei quali contiene i miei aspetti. Come posso prendere gli aspetti e tessere più moduli Maven? La documentazione per il plugin AspectJ Maven è un po 'scarna e non è stato possibile trovare molti esempi.AspectJ tessere moduli Maven

Ho provato a mettere il plugin aspectj nel pom principale ma non sembra applicare il consiglio per i moduli al di sotto di esso.

Ho anche provato a specificare la proprietà AspectDirectory ma non sembra che abbia alcun effetto. Forse l'ho fatto male?

risposta

17

penso che il meccanismo è spiegato abbastanza bene in questa pagina:

Using Aspect Libraries

In sostanza:

Hai messo tutti i tuoi aspetti in un unico progetto, compilare utilizzando l'aspectj-maven-plugin, aggiungere una dipendenza a questo progetto a tutti i progetti che si desidera tessere e anche aggiungere questo config ai progetti tessuti:

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

L'u la parte gly è: devi aggiungere questa configurazione ad ogni progetto, quindi una possibilità sarebbe quella di usare un pom genitore. Purtroppo, avrebbe dovuto essere allo stesso livello come il progetto gli aspetti (perché un pom non può definire una dipendenza per un progetto sotto di essa), in modo da sarebbe avere qualcosa di simile

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

o anche come questo

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

Faresti aggiungere sia la <dependency> e la configurazione del plugin AspectJ alla pom del progetto Java-genitore

Problemi correlati