这是Maven已知的一个特性,在maven3之后,除非在POM文件中显示的指定一个版本,否则会使用编译器默认的source/target
版本1.5,与运行Maven时的JDK版本无关。
这会经常导致一些莫名其妙的错误,比如
Perhaps you are running on a JRE rather than a JDK
手动设置方式
(一)全局设置
首先我们要在settings.xml文件中找到<profiles>标签,然后在此标签内部粘贴如下配置:
<profile>
<id>jdk-1.7</id>
<activation>
<jdk>1.7</jdk>
</activation>
<properties>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
<maven.compiler.compilerVersion>1.7</maven.compiler.compilerVersion>
</properties>
</profile>
(二)单个项目单独设置
如果需要在某个项目中指定编译级别,可以在项目的pom.xml文件中配置,也有如下两种方法:
1)在maven构建的项目配置文件pom.xml中进行全局的配置
<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)在当前项目的pom.xml文件中build中指定
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
<encoding>utf-8</encoding>
<showWarnings>true</showWarnings>
</configuration>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
</build>
插入一个小知识点
在创建Maven工程后,插件配置中通常会用到一些Maven变量,因此需要找个地方对这些变量进行统一定义
在根节点project下增加properties节点,所有自定义变量均可以定义在此节点内
<!-- 全局属性配置 -->
<properties>
<project.build.name>tools</project.build.name>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
maven也有一些内置变量,如:
- ${basedir} 项目根目录
- ${project.build.directory} 构建目录,缺省为target
- ${project.build.outputDirectory} 构建过程输出目录,缺省为target/classes
- ${project.build.finalName} 产出物名称,缺省为${project.artifactId}-${project.version}
- ${project.packaging} 打包类型,缺省为jar
- ${project.xxx} 当前pom文件的任意节点的内容