Ich habe meine JDK-Version von 8 auf 9 umgestellt und das AspectJ-Plugin funktioniert aufgrund fehlender tools.jar nicht mehr:
Ausführungsstandard von Ziel org.codehaus.mojo: aspectj-maven-plugin: 1.10: Kompilierung fehlgeschlagen: Plugin org.codehaus.mojo: aspectj-maven-plugin: 1.10 oder eine seiner Abhängigkeiten konnte nicht aufgelöst werden: Konnte nicht gefunden werden artifact com.Sun: tools: jar: 9.0.1 im angegebenen Pfad C:\Programme\Java\jdk-9.0.1 /../ lib/tools.jar
Ich verstehe, dass tools.jar (und rt.jar) aus Java 9 JDK entfernt wurden. Ich frage mich, ob es eine Möglichkeit gibt, das Maven AspectJ-Plugin für die Arbeit mit Java 9 ohne tools.jar zu nutzen.
Hier ist meine Plugin-Definition mit Versionsinformationen:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.10</version>
<configuration>
<encoding>${project.build.sourceEncoding}</encoding>
<complianceLevel>1.9</complianceLevel>
<showWeaveInfo>true</showWeaveInfo>
<XnoInline>true</XnoInline>
</configuration>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.9.0.RC2</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjtools</artifactId>
<version>1.9.0.RC2</version>
</dependency>
</dependencies>
</plugin>
Ich habe gerade einen hässlichen Trick gefunden, um aspectj mit Java 9 arbeiten zu lassen, zeige einfach com.Sun: tools auf die pom.xml und der Compiler läuft gerade.
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.11</version>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>test-compile</goal>
</goals>
<configuration>
<source>1.8</source>
<target>1.8</target>
<complianceLevel>1.8</complianceLevel>
<encoding>UTF-8</encoding>
<verbose>true</verbose>
<weaveDependencies>
<weaveDependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-netty</artifactId>
</weaveDependency>
</weaveDependencies>
<showWeaveInfo>true</showWeaveInfo>
<XnoInline>true</XnoInline>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${aspectj.version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjtools</artifactId>
<version>${aspectj.version}</version>
</dependency>
<dependency>
<groupId>com.Sun</groupId>
<artifactId>tools</artifactId>
<version>${Java.version}</version>
<scope>system</scope>
<systemPath>${project.basedir}/pom.xml</systemPath>
</dependency>
</dependencies>
</plugin>
Bis Version 1.11.1
von org.codehaus.mojo
in Maven Central veröffentlicht wird, verwenden Sie stattdessen snapshot build :
<groupId>com.github.m50d</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.11.1</version>
Auf dasselbe Problem gestoßen ist das Problem, dass diese transitiven Abhängigkeiten standardmäßig im aspectj-maven-Plugin aktiv sind.
Reparierte es für mich mit diesem PR https://github.com/mojohaus/aspectj-maven-plugin/pull/35
Hast du die neueste Plugin-Version überprüft?
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.11</version>