java spring aspectj java-8 aspectj-maven-plugin

Tejido Spring+AspectJ para java 8 utilizando aspectj-maven-plugin



java-8 (1)

Solución antes del lanzamiento oficial antes de septiembre de 2015

Después de muchos dolores de cabeza y muchas horas luchando contra esto, afortunadamente pude resolver este problema. Aquí esta lo que hice:

Para usar aspectj-maven-plugin con Java 8 pude configurar la versión aspectj-maven-plugin 1.7 (Note que aspectj-maven-plugin 1.6 funciona para Java 7).

Entonces, la configuración del complemento maven debe ser:

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

Por cierto, los jarrones AspectJ necesarios son:

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

Lo más importante que he tenido problemas fue que para instalar el jar de aspectj-maven-plugin 1.7 tuve que hacerlo manualmente ya que estos archivos jar / pom aún no están en repositorio maven.

Actualización: Por lo tanto, el archivo jar se puede descargar desde el enlace de Haus Jira (mira la sección de Adjuntos). Si Haus ya no está disponible, puedes descargarlo desde mi github:

https://github.com/fedepia/aspectj-maven-plugin-1.7

Después de descargarlo y copiarlo en mi repositorio local, necesitaba crear mi propio aspectj-maven-plugin-1.7-SNAPSHOT.pom dentro del directorio:

.m2/repository/org/codehaus/mojo/aspectj-maven-plugin/1.7-SNAPSHOT/aspectj-maven-plugin-1.7-SNAPSHOT.pom

Me basé en una copia de la versión 1.6 pero tuve que modificar el siguiente contenido:

<version>1.7-SNAPSHOT</version> <properties> <aspectjVersion>1.8.1</aspectjVersion> <mavenVersion>2.2.1</mavenVersion> <changesPluginVersion>2.9</changesPluginVersion> </properties>

Eso es todo lo que tienes aquí, espera ayudar.

Actualización: (agregando más detalles como Xtreme Biker preguntó en los comentarios)

En mi configuración de contexto tengo:

<aop:aspectj-autoproxy /> <bean id="notificationAspect" class="com.integration.core.aspect.NotificationAspect" factory-method="aspectOf" scope="singleton"></bean>

Para mi aspecto Java uso:

@Aspect public class NotificationAspect { ... @AfterThrowing(pointcut="@annotation(com.integration.core.meta.NotifyOnFailure)", throwing="ex") public void executeOnException(JoinPoint joinPoint, ExternalApiExecutionException ex) throws Throwable { ...

Finalmente, el complemento oficial lanzado desde septiembre de 2015

Esta es una actualización de la respuesta con la versión oficial del complemento. Para usar Java 8 con AspectJ, el complemento oficial de aspecto maven se puede encontrar en este enlace:

http://www.mojohaus.org/aspectj-maven-plugin/usage.html

Aquí está el enlace al repositorio de maven:

http://mvnrepository.com/artifact/org.codehaus.mojo/aspectj-maven-plugin/1.8

Como la documentación indica que el código para usarlo es:

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

Estoy migrando mi proyecto de java 7 a java 8 y el problema que tengo está relacionado con aspectj weaving usando aspectj-maven-plugin .

Pude configurar satisfactoriamente el tejido utilizando este complemento que se ejecuta en Java 6 y 7 según la documentación de Haus . Pero el problema es que no he encontrado ninguna forma de usar (y encontrar) la versión 7 del complemento que admite Java 8. Vi aquí que el complemento 7 agrega soporte para Java 8 pero no pudo encontrar la manera de usarlo.

Este es el complemento de configuración que necesito:

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

Confirmé que el código anterior que usa la versión 1.6 funciona bien para Java 7, pero no tuve suerte tratando de usar la versión 1.7.

¿Sabes cómo ejecutar the weaver para spring + aspectj corriendo en Java 8?