Maven是否准备好了JDK9?

今天我试了最新的jdk9 Build 113,并尝试用最新的Maven 3.3.9编译我的项目

这些命令(部分通过twitter发现)

export MVN_OPTS="-Dmaven.compiler.fork -Dmaven.compiler.executable=/somewhere/Downloads/jdk-9/bin/javac" export JAVA_HOME="/somewhere/Downloads/jdk-9" mvn clean install 

但是我得到这个错误 …总之:

 [WARNING] Error injecting: org.codehaus.plexus.archiver.jar.JarArchiver java.lang.ExceptionInInitializerError at sun.reflect.NativeConstructorAccessorImpl.newInstance0(java.base@9-ea/Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(java.base@9-ea/NativeConstructorAccessorImpl.java:62) ... at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) Caused by: java.lang.ArrayIndexOutOfBoundsException: 1 at org.codehaus.plexus.archiver.zip.AbstractZipArchiver.<clinit>(AbstractZipArchiver.java:116) ... 89 more [WARNING] Error injecting: org.apache.maven.plugin.jar.JarMojo java.lang.ExceptionInInitializerError at sun.reflect.NativeConstructorAccessorImpl.newInstance0(java.base@9-ea/Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(java.base@9-ea/NativeConstructorAccessorImpl.java:62) ... at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) Caused by: java.lang.ArrayIndexOutOfBoundsException: 1 at org.codehaus.plexus.archiver.zip.AbstractZipArchiver.<clinit>(AbstractZipArchiver.java:116) ... 89 more 

什么是用于JDK9的正确的mavenconfiguration或参数?

 $ mvn --version Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T17:41:47+01:00) Maven home: /home/somewhere/Downloads/maven Java version: 9-ea, vendor: Oracle Corporation Java home: /home/somewhere/Downloads/jdk-9 Default locale: en_US, platform encoding: UTF-8 OS name: "linux",... 

是的,现在就准备好了。 还有一些事情正在进行,但通常可用。 看看我的一个项目为例。

https://github.com/cfdobber/maven-java9-jigsaw

下面是一位Maven PMC成员(我)的回答:

不它不是。 Robert Scholte正在研究它。 拼图等东西引入了很多变化。 没有正式的时间表(Maven +官方插件)。

你看到的问题其实不是Maven,而是Plexus Archiver。 请参阅他们的GitHub页面。 如果您认为可以增加价值,请联系maven-dev邮件列表。

进度文档: https : //cwiki.apache.org/confluence/display/MAVEN/Java+9+-+Javaaw

更新:现在应该没有这个解决方法。

问题已经从丛存档团队,但尚未释放 – 感谢迈克尔 – O指出我正确的地方:)!

现在有一个从PR 12中的 ctomc发布的解决方法来使用旧的丛存档器版本2.4.4:

 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>2.4.1</version> <dependencies> <dependency> <groupId>org.codehaus.plexus</groupId> <artifactId>plexus-archiver</artifactId> <version>2.4.4</version> </dependency> </dependencies> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.6</version> <dependencies> <dependency> <groupId>org.codehaus.plexus</groupId> <artifactId>plexus-archiver</artifactId> <version>2.4.4</version> </dependency> </dependencies> </plugin> 

我有同样的问题,最近发布的最新maven-javadoc插件修复了这个问题。 更新了pom文件中的依赖关系到<version>3.0.0-M1</version>

Java doc插件在最新版本中仍然存在问题。 (3.0.0.M1)

我觉得现在maven已经准备好了,下面的代码片段可以告诉maven使用java 9:

  <build> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.7.0</version> <configuration> <source>9</source> <target>9</target> </configuration> </plugin> </plugins> </build>