------ 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 enable assertions (<<<-source 1.4>>>) and also want the compiled classes to be compatible with JVM 1.4 (<<<-target 1.4>>>), you can then put: +----- [...] [...] org.apache.maven.plugins maven-compiler-plugin ${project.version} 1.4 1.4 [...] [...] +----- <> 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://mojo.codehaus.org/animal-sniffer-maven-plugin/}Animal Sniffer Maven Plugin}} to verify your code doesn't use unintended APIs.