------ Setting the -source and -target of the Java Compiler ------ Edwin Punzalan ------ 2006-07-05 ------ ~~ Licensed to the Apache Software Foundation (ASF) under one ~~ or more contributor license agreements. See the NOTICE file ~~ distributed with this work for additional information ~~ regarding copyright ownership. The ASF licenses this file ~~ to you under the Apache License, Version 2.0 (the ~~ "License"); you may not use this file except in compliance ~~ with the License. You may obtain a copy of the License at ~~ ~~ http://www.apache.org/licenses/LICENSE-2.0 ~~ ~~ Unless required by applicable law or agreed to in writing, ~~ software distributed under the License is distributed on an ~~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY ~~ KIND, either express or implied. See the License for the ~~ specific language governing permissions and limitations ~~ under the License. ~~ NOTE: For help with the syntax of this file, see: ~~ http://maven.apache.org/doxia/references/apt-format.html Setting the <<<-source>>> and <<<-target>>> of the Java Compiler Sometimes when you may need to compile a certain project to a different version than what you are currently using. The <<>> can accept such command using <<<-source>>> and <<<-target>>>. The Compiler Plugin can also be configured to provide these options during compilation. For example, if you want to use the Java 8 language features (<<<-source 1.8>>>) and also want the compiled classes to be compatible with JVM 1.8 (<<<-target 1.8>>>), you can either add the two following properties, which are the default property names for the plugin parameters: +----- [...] 1.8 1.8 [...] +----- or configure the plugin directly: +----- [...] [...] org.apache.maven.plugins maven-compiler-plugin ${project.version} 1.8 1.8 [...] [...] +----- <> Merely setting the <<>> option does not guarantee that your code actually runs on a JRE with the specified version. The pitfall is unintended usage of APIs that only exist in later JREs which would make your code fail at runtime with a linkage error. To avoid this issue, you can either configure the compiler's boot classpath to match the target JRE or use the {{{http://www.mojohaus.org/animal-sniffer/animal-sniffer-maven-plugin/}Animal Sniffer Maven Plugin}} to verify your code doesn't use unintended APIs. In the same way, setting the <<>> option does not guarantee that your code actually compiles on a JDK with the specified version. To compile your code with a specific JDK version, different than the one used to launch Maven, refer to the {{{../examples/compile-using-different-jdk.html}Compile Using A Different JDK}} example.