Je migre mon projet de Java 7 vers Java 8 et le problème que j'ai) est lié au tissage aspectj utilisant aspectj-maven-plugin
.
J'ai pu configurer avec succès le tissage en utilisant ce plugin fonctionnant sur Java 6 et 7 selon documentation Haus . Mais le problème est que je n'ai trouvé aucun moyen d'utiliser (et trouver) la version 7 du plugin qui prend en charge Java 8. J'ai vu ici que le plugin 7 ajoute Java 8 support mais ne pouvait pas) t trouver un moyen de l'utiliser.
Voici le plugin de configuration dont j'ai besoin:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.7</version> <!-- AspectJ weaver plugin 7 is for Java 8 (version 1.6 is for Java 7) -->
<configuration>
<complianceLevel>1.8</complianceLevel>
<source>1.8</source>
<target>1.8</target>
</configuration>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
</plugin>
J'ai confirmé que le code ci-dessus utilisant la version 1.6 fonctionne bien pour Java 7, mais je n'ai pas eu de chance d'essayer d'utiliser la version 1.7.
Savez-vous comment exécuter le tisserand pour le printemps + aspectj fonctionnant sur Java 8?
Après de nombreux maux de tête et de nombreuses heures à lutter contre cela, heureusement j'ai pu résoudre ce problème. Voici ce que j'ai fait:
Utiliser aspectj-maven-plugin
avec Java 8 J'ai pu configurer la version aspectj-maven-plugin 1.7 (Notez que aspectj-maven-plugin 1.6 fonctionne pour Java 7).
Ainsi, la configuration du plugin maven doit être:
<!-- AspectJ configuration -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.7-SNAPSHOT</version>
<configuration>
<complianceLevel>1.8</complianceLevel>
<source>1.8</source>
<target>1.8</target>
</configuration>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
</plugin>
Soit dit en passant, les pots aspectJ nécessaires sont:
<!-- Spring AOP + AspectJ -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.8.1</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>4.0.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.1</version>
</dependency>
La chose la plus importante que j'ai rencontrée est que pour installer le pot aspectj-maven-plugin 1.7, je devais le faire manuellement car ces fichiers jar/pom ne sont pas encore sur maven repo.
Mise à jour: Ainsi, le fichier jar peut être téléchargé à partir du lien Haus Jira (regardez la section des pièces jointes). Si Haus n'est plus disponible, vous pouvez le télécharger depuis mon github:
https://github.com/fedepia/aspectj-maven-plugin-1.7
Après l'avoir téléchargé et copié dans mon référentiel local, je devais créer mon propre aspectj-maven-plugin-1.7-SNAPSHOT.pom
fichier dans le répertoire:
.m2\repository\org\codehaus\mojo\aspectj-maven-plugin\1.7-SNAPSHOT\aspectj-maven-plugin-1.7-SNAPSHOT.pom
Je me suis basé sur une copie de la version 1.6 mais j'ai dû modifier le contenu suivant:
<version>1.7-SNAPSHOT</version>
<properties>
<aspectjVersion>1.8.1</aspectjVersion>
<mavenVersion>2.2.1</mavenVersion>
<changesPluginVersion>2.9</changesPluginVersion>
</properties>
C'est tout ici que vous allez, j'espère vous aider.
Mise à jour: (ajout de plus de détails comme Xtreme Biker l'a demandé dans les commentaires)
Dans ma configuration de contexte, j'ai:
<aop:aspectj-autoproxy />
<bean id="notificationAspect" class="com.integration.core.aspect.NotificationAspect" factory-method="aspectOf" scope="singleton"></bean>
Pour mon Java aspect que j'utilise:
@Aspect
public class NotificationAspect
{
...
@AfterThrowing(pointcut="@annotation(com.integration.core.meta.NotifyOnFailure)", throwing="ex")
public void executeOnException(JoinPoint joinPoint, ExternalApiExecutionException ex) throws Throwable
{
...
Il s'agit d'une mise à jour de la réponse avec la version officielle du plugin. Pour utiliser Java 8 avec AspectJ, le plugin officiel maven aspectj se trouve sur ce lien:
http://www.mojohaus.org/aspectj-maven-plugin/usage.html
Voici le lien vers le référentiel maven:
http://mvnrepository.com/artifact/org.codehaus.mojo/aspectj-maven-plugin/1.8
Comme indiqué dans la documentation, le code à utiliser est:
<project>
...
<dependencies>
...
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.8.7</version>
</dependency>
...
</dependencies>
...
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<goals>
<goal>compile</goal> <!-- use this goal to weave all your main classes -->
<goal>test-compile</goal> <!-- use this goal to weave all your test classes -->
</goals>
</execution>
</executions>
</plugin>
...
</plugins>
<build>
...
</project>