Решение перед официальным выпуском до сентября 2015 г.
После многих головных болей и многих часов борьбы с этим, к счастью, я смог решить эту проблему. Вот что я сделал:
Чтобы использовать aspectj-maven-plugin
с Java 8, я могу настроить версию aspectj-maven-plugin 1.7 (обратите внимание, что для Java 7 работает аспект j-maven-plugin 1.6).
Итак, конфигурация плагина maven должна быть:
<!-- 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>
Кстати, нужные jar-файлы аспекта J:
<!-- 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>
Самое главное, с чем я столкнулся, это то, что для установки jar-файла aspectj-maven-plugin 1.7 мне пришлось делать это вручную, поскольку этих файлов jar/pom еще нет в репозитории maven.
Обновление: Итак, jar-файл можно скачать по ссылке Haus Jira (см. раздел Приложения). Если Haus больше не доступен, вы можете скачать его с моего github:
https://github.com/fedepia/aspectj-maven-plugin-1.7
После загрузки и копирования в локальный репозиторий мне нужно было создать собственный файл aspectj-maven-plugin-1.7-SNAPSHOT.pom
в каталоге:
.m2\repository\org\codehaus\mojo\aspectj-maven-plugin\1.7-SNAPSHOT\aspectj-maven-plugin-1.7-SNAPSHOT.pom
Я взял копию из версии 1.6, но мне пришлось изменить следующее содержимое:
<version>1.7-SNAPSHOT</version>
<properties>
<aspectjVersion>1.8.1</aspectjVersion>
<mavenVersion>2.2.1</mavenVersion>
<changesPluginVersion>2.9</changesPluginVersion>
</properties>
На этом все, надеюсь на помощь.
Обновление: (добавление дополнительных деталей по запросу Xtreme Biker в комментариях)
В моей конфигурации контекста у меня есть:
<aop:aspectj-autoproxy />
<bean id="notificationAspect" class="com.integration.core.aspect.NotificationAspect" factory-method="aspectOf" scope="singleton"></bean>
Для моего java-аспекта я использую:
@Aspect
public class NotificationAspect
{
...
@AfterThrowing(pointcut="@annotation(com.integration.core.meta.NotifyOnFailure)", throwing="ex")
public void executeOnException(JoinPoint joinPoint, ExternalApiExecutionException ex) throws Throwable
{
...
Наконец-то официальный плагин выпущен с сентября 2015 года.
Это обновление ответа с официальным выпуском плагина. Чтобы использовать Java 8 с AspectJ, по этой ссылке можно найти официальный подключаемый модуль Maven для аспектов:
http://www.mojohaus.org/aspectj-maven-plugin/usage.html
Вот ссылка на репозиторий maven:
http://mvnrepository.com/artifact/org.codehaus.mojo/aspectj-maven-plugin/1.8
Как указано в документации, код для его использования:
<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>
person
Federico Piazza
schedule
11.08.2014