Java 9 and the impact on Maven Projects (Devoxx 2016)

14
@rfscholte #Devoxx #Maven Java 9 and the impact on Maven Projects Robert Scholte Chairman Apache Maven CGI `

Transcript of Java 9 and the impact on Maven Projects (Devoxx 2016)

Page 1: Java 9 and the impact on Maven Projects (Devoxx 2016)

@rfscholte#Devoxx #Maven

Java 9 and the impact on Maven Projects

Robert ScholteChairman Apache Maven

CGI

`

Page 2: Java 9 and the impact on Maven Projects (Devoxx 2016)

@rfscholte#Devoxx #Maven

Tools in Actions• Migrating an example project to Java9

Page 3: Java 9 and the impact on Maven Projects (Devoxx 2016)

@rfscholte#Devoxx #Maven

HistoryApril 2014: Java 9 Early Access releases

No remarkable issues when running with MavenSeptember 2015: Jigsaw Early Access releases

99%+ of the Java Maven projects failed to compileOpenJDK fixed issue and released within 72h!

zero LOCs changed in Maven core codebase to run on Java 9

Page 4: Java 9 and the impact on Maven Projects (Devoxx 2016)

@rfscholte#Devoxx #Maven

Maven by ExampleChapter 7Multi-Module Enterprise Project“In this chapter, we create a multi-module project that evolves the examples from Chapter 6 and Chapter 5 into a project that uses the Spring Framework and Hibernate to create both a simple web application and a command-line utility to read data from the Yahoo Weather feed.”

Page 5: Java 9 and the impact on Maven Projects (Devoxx 2016)

@rfscholte#Devoxx #Maven

Multi-Module Enterprise ProjectAdjustments:• Added m-shade-plugin to :simple-command• Locked maven-jar-plugin to latest 2.x (= 2.6)• Locked maven-war-plugin to latest 2.x (=2.6)• Add hbm2ddl=create persist config-files

Page 6: Java 9 and the impact on Maven Projects (Devoxx 2016)

@rfscholte#Devoxx #Maven

Baseline• Maven 3.4.0-SNAPSHOT (colorized output)• JDK 1.8.0_040 / jigsaw-jdk-9-ea+142

Page 7: Java 9 and the impact on Maven Projects (Devoxx 2016)

@rfscholte#Devoxx #Maven

Source / Target option 1.5 is no longer supported.Java 5 compatible?• Configure maven-toolchain-plugin

Java 6 compatible?• Set source/target to 1.6• Replace source/target with release 6 • (requires maven-compiler-plugin 3.6.0)

Page 8: Java 9 and the impact on Maven Projects (Devoxx 2016)

@rfscholte#Devoxx #Maven

Caused by: j.l.AIOOBException: 1JEP 223: New Version-String Scheme (project Verona)

System Property Existing Proposed

java.version 1.9.0 9

java.runtime.version 1.9.0-b100 9+100

java.vm.version 1.9.0-b100 9+100

java.specification.version 1.9 9

java.vm.specification.version 1.9 9

Page 9: Java 9 and the impact on Maven Projects (Devoxx 2016)

@rfscholte#Devoxx #Maven

version.split(“\\.”)[1]maven-archiver-3.0.1- maven-jar-plugin-3.0.0- maven-war-plugin-3.0.0- maven-ear-plugin-xxx- maven-assembly-plugin-xxx

maven-javadoc-plugin-2.10.4…

Page 10: Java 9 and the impact on Maven Projects (Devoxx 2016)

@rfscholte#Devoxx #Maven

j.l.reflect.InaccessibleObjectExceptionjigsaw-jdk-9-ea+135 #AwkwardStrongEncapsulation

Options:• Xstream fix (not available yet)• Improved support project Jigsaw• maven-war-plugin could think of other

implementation• Don’t create war• Use jigsaw-jdk-9-ea+134 or earlier as Maven JRE

(but compile with jigsaw-jdk-9-ea+141)

Page 11: Java 9 and the impact on Maven Projects (Devoxx 2016)

@rfscholte#Devoxx #Maven

modules are not supported in -source 1.6Options:• Set release=9• Apply recipe “Older projects with module-

info”• maven-compiler-plugin with 2 execution-blocks

Page 12: Java 9 and the impact on Maven Projects (Devoxx 2016)

@rfscholte#Devoxx #Maven

Split packages“If two or more JAR files on the class path contain types in the same package then at most one of them can be used as an automatic module, since the module system still guarantees that every named module reads at most one named module defining a given package and that named modules defining identically-named packages do not interfere with each other.”

Option (just one): upgrade/replace dependencies

Page 13: Java 9 and the impact on Maven Projects (Devoxx 2016)

@rfscholte#Devoxx #Maven

How to continue• Not all Java9/jigsaw changes are related to Maven• There will be Maven recipes to help migrating to

Java 9

Page 14: Java 9 and the impact on Maven Projects (Devoxx 2016)

@rfscholte#Devoxx #Maven

Thank youJava 9 and the impact on Maven

ProjectsRobert Scholte

Please rate & give feedback on this talk

`