1、maven-compiler-plugin,用于代码编译
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.6.0</version> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin>
编译版本也可以这样设置:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
2、使用eclipse自带的编译器编译,如果有jdk1.7(泛型)新特性时会报错,加入plexus-compiler-eclipse构建进行处理
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <source>1.7</source> <target>1.7</target> <compilerId>eclipse</compilerId> </configuration> <dependencies> <dependency> <groupId>org.codehaus.plexus</groupId> <artifactId>plexus-compiler-eclipse</artifactId> <version>2.2</version> </dependency> </dependencies> </plugin>
3、上述问题的另外处理方案: Eclipse编译代码(即clean)时,使用的是自带的JDT(Java Development Tools),而Maven默认使用的是JAVA_HOME中的javac,而javac相对JDT的检查机制来说,更加的严格,所以导致Eclipse可以编译通过, 而用Maven编译会报错的结果。 解决:点击 Eclipse –> Project –> Clean… 使用JDT将源代码编译到target文件夹下,然后直接使用mvn package 打包即可(不要加clean)。
4、配置解释
<source>:源代码使用的开发版本
<target>:需要生成的目标class文件的编译版本
一般而言,target与source是保持一致的,但是,有时候为了让程序能在其他版本的jdk中运行,需要配置不同的版本。比如:生产环境jdk为1.5,开发环境jdk为1.7,只要保证开发环境不使用1.5之后的新语法,配置不同的版本编译也是可以的。