Запуск JDK8 для аспекта
Я пытаюсь запустить плагин aspectj-maven с JDK8. Но это приводит к ошибкам типа "Тип java.lang.CharSequence не может быть разрешен. На него косвенно ссылаются необходимые файлы.class"
Любая помощь о том, как решить, или если aspectj-maven-plugin поддерживает JDK8. Я использую версию 1.6 aspectj - maven-plugin.
3 ответа
Мне нужно было достичь того же, и я сошел с ума, пытаясь выяснить это, к счастью, я смог решить это, и здесь я дам вам то, что я сделал:
Использовать aspectj-maven-plugin
с Java 8 вам нужна версия aspectj-maven-plugin 1.7 (обратите внимание, что aspectj-maven-plugin 1.6 работает для Java 7).
Итак, конфигурация плагина 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>
Между прочим, необходимы следующие JA-файлы:
<!-- 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>1.8.1</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.1</version>
</dependency>
И самое важное, с чем я столкнулся, было то, что вам нужно вручную установить jar aspectj-maven-plugin 1.7 в ваш pom.xml, так как этот jar еще не находится в репозитории maven.
Вы можете получить его у Haus Jira (см. Раздел "Приложение"):
https://jira.codehaus.org/browse/MASPECTJ-131
Кстати, как только вы загрузите его скопировать в репозиторий, вам нужно создать свой собственный 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>
Вот и все, что вы идете, надеюсь помочь.
Вам не нужен 1,7-SNAPSHOT для этого. У меня есть этот фрагмент в POM, и все работает:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
<configuration>
<source>1.8</source>
<target>1.8</target>
<complianceLevel>1.8</complianceLevel>
<showWeaveInfo>true</showWeaveInfo>
</configuration>
<dependencies>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.8.1</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjtools</artifactId>
<version>1.8.1</version>
</dependency>
</dependencies>
</plugin>
Другой способ решить эту проблему - понизить уровень JDK до 1.7. JDK 1.7 хорошо работает с aspectj-maven-plugin версий 1.4 - 1.6.
Вот скриншот, показывающий, как изменить уровень JDK в проекте IntelliJ IDEA:
Установите Project SDK на 1.7. Смотрите документацию для более подробной информации.