2010-09-22 18 views
2

J'essaie de convertir mon aspect tissé en fonction du temps de chargement en un tissu tissé dans le temps.Configuration de tissage au moment du compilage

J'ai donc retiré <context:load-time-weaver/> de ma config de printemps, et ajouté un compilateur aspectj à mon pom.xml. Mais je ne sais pas comment convertir l'information en META-INF/aop.xml.

J'ai quelque chose comme ça là-dedans:

<!DOCTYPE aspectj PUBLIC 
     "-//AspectJ//DTD//EN" "http://www.eclipse.org/aspectj/dtd/aspectj.dtd"> 
<aspectj> 
    <weaver> 
     <!-- only weave classes in this package --> 
    </weaver> 
    <aspects> 
     <!-- use only this aspect for weaving --> 
     <concrete-aspect name="MyAspect_" extends="hu.myAspect"> 
     <pointcut name="pointcut" expression="execution(public * javax.persistence.EntityManager.*(..)) || execution(public * hu..*.create(..))"/> 
     </concrete-aspect> 
    </aspects> 
</aspectj> 

Répondre

4

Il n'y a pas d'équivalent exact à aop.xml dans le tissage de la compilation, mais vous pouvez configurer le AspectJ maven plugin-include and exclude certain aspects comme celui-ci

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>aspectj-maven-plugin</artifactId> 
    <version>1.3</version> 
    <configuration> 
     <includes> 
      <include>**/TransationAspect.java</include> 
      <include>**/SecurityAspect.aj</include> 
     </includes> 
     <excludes> 
      <exclude>**/logging/*.aj</exclude> 
     </excludes> 
    </configuration> 
    <executions> 
     <execution> 
      <goals> 
       <goal>compile</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 
+0

merci de répondre, mais puis-je configurer des pointcuts là? – pihentagy

+0

Je ne pense pas que vous le pouvez. Je pense que vous ne pouvez inclure/exclure que des aspects entiers, pas des coupes individuelles. Peut-être que le fichier ajdt build def est une option (mais je ne sais pas): http://mojo.codehaus.org/aspectj-maven-plugin/compile-mojo.html#ajdtBuildDefFile –

+0

Je crois que vous devez spécifier basedir - Si vous lancez ceci avec l'argument -X, c'est ce qu'il vous dit. Dans mon cas, je devais mettre là $ {basedir}/src/main/java kboom