Using a different JDK
There may be up to three different JDKs involved in the excecution of this plugin:
- the JDK used to run Maven (should be Java 17 or newer)
- the JDK used to launch the Eclipse plugins used in the build, called the “Execution Environment”
- the JDK used as compilation source version for the project(s) being built
The preferable way to use different JDKs in Maven is to use the toolchains mechanism (see Guide to Using Toolchains).
ExecutionEnvironment
The executionEnvironment
profile is used to resolve dependencies and run Faktor-IPS. It must be at least JavaSE-11 which is pre-configured. It must match the Eclipse version being used, so JavaSE-11 is good for the default of Eclipse 2020-03, but starting from 2021-12 it should be JavaSE-17. See Repositories and additional plugins for how to configure another Eclipse version.
JDK for compiling a Faktor-IPS project
Although a JDK 11 or newer is used to start the builder, a Faktor-IPS project might use an older Java version (at least Java 8) as its compile target and dependency. To compile such a project, that JDK must be passed to the build. If neither jdkId
or jdkDir
is configured, the ExecutionEnvironment is used as the default compile target and dependency for the Faktor-IPS projects.
For example, use the JDK with the Id JavaSE-1.8
in your toolchains.xml.
<plugin>
<groupId>org.faktorips</groupId>
<artifactId>faktorips-maven-plugin</artifactId>
<configuration>
<jdkId>JavaSE-1.8</jdkId>
</configuration>
<executions>
<execution>
<goals>
<goal>faktorips-clean</goal>
<goal>faktorips-build</goal>
</goals>
</execution>
</executions>
</plugin>
The other possibility is to use the directory directly in the jdkDir
parameter and therefore bypassing the toolchains mechanism.
<plugin>
<groupId>org.faktorips</groupId>
<artifactId>faktorips-maven-plugin</artifactId>
<configuration>
<jdkDir>/usr/lib/jvm/java-8-openjdk-amd64/</jdkDir>
</configuration>
<executions>
<execution>
<goals>
<goal>faktorips-clean</goal>
<goal>faktorips-build</goal>
</goals>
</execution>
</executions>
</plugin>
Using Java 17 for the project
If you want to use Java 17, you need to set ExecutionEnvironment and an Eclipse version that can handle Java 17, for example
<plugin>
<groupId>org.faktorips</groupId>
<artifactId>faktorips-maven-plugin</artifactId>
<configuration>
<executionEnvironment>JavaSE-17<executionEnvironment>
<!-- Eclipse 2021-12 -->
<eclipseRepository>https://download.eclipse.org/eclipse/updates/4.22/</eclipseRepository>
</configuration>
<executions>
<execution>
<goals>
<goal>faktorips-clean</goal>
<goal>faktorips-build</goal>
</goals>
</execution>
</executions>
</plugin>