Maven, Eclipse and Java 9
Anyone that uses the M2E(maven-to-eclipse) plugin in eclipse knows the issue where you have run a build, then update maven on your project only to have it reset the JRE and throw up a wall of project errors! I noticed the issue in the post I made on running Java EE 8 with Java 9 using Open Liberty
The solution is to ensure the compiler is running the correct version you require, so
<properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <failOnMissingWebXml>false</failOnMissingWebXml> </properties>
Or –
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.7.0</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build>
There is a further point worth noting if you are using Java 9 or later, as the version number format is different. So while Java 8 has a version of 1.8, Java 9 has a version of 9
This means you need to state the version in your pom as
<properties> <maven.compiler.source>9</maven.compiler.source> <maven.compiler.target>9</maven.compiler.target> <failOnMissingWebXml>false</failOnMissingWebXml> </properties>
Or using the full version in my JavaEE8 project(https://github.com/farrelmr/javaee8/blob/master/pom.xml) this would be stated as –
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.javabullets.javaee8</groupId> <artifactId>javaee8</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <dependencies> <dependency> <groupId>javax</groupId> <artifactId>javaee-api</artifactId> <version>8.0</version> <scope>provided</scope> </dependency> </dependencies> <build> <finalName>javaee8</finalName> </build> <properties> <maven.compiler.source>9</maven.compiler.source> <maven.compiler.target>9</maven.compiler.target> <failOnMissingWebXml>false</failOnMissingWebXml> </properties> </project>
This will prevent the problem in eclipse
This post may seem obvious – but it is worth stating that the change in version number for Java 9 means you must check you are using the correct version number in maven
Published on Java Code Geeks with permission by Martin Farrell, partner at our JCG program. See the original article here: Maven, Eclipse and Java 9 Opinions expressed by Java Code Geeks contributors are their own. |