今天测试那边来一个诡异的要求,要我们打一个jdk1.6的包,然后我就去装了一个jdk1.6,一打报错,报错信息的意思是,maven3.3.1以后必须要jdk1.7的版本,我一看自己的maven是3.6的,指定不行了。那只能去下maven3.3.1以前的版本了,然后打开maven的官网,在下载界面有这么一段:
网官网上指明了高版本maven不支持低版本的jdk,但是提供了另一种方式:Toolchains,能够实现在高版本的jdk和maven下打低版本的jar包,然后我跟着实施了一遍,成功了,以下是解决过程:
- 创建一个toolchains.xml配置文件,内容如下,jdkHome就是我们前面安装了的jd1.6的位置,所以其实你还是要下载老版本的jdk,但是maven使用的jdk版本要是1.7以上的。
<?xml version="1.0" encoding="UTF8"?>
<toolchains>
<toolchain>
<type>jdk</type>
<provides>
<version>1.6</version>
<vendor>sun</vendor>
</provides>
<configuration>
<jdkHome>D:\JDK6\JDK</jdkHome>
</configuration>
</toolchain>
</toolchains>
这个文件可以放在任意位置,因为maven打包的时候,可以指定这文件的路径。
- 在要打包的项目模块的pom中添加一个插件:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-toolchains-plugin</artifactId>
<version>1.1</version>
<executions>
<execution>
<goals>
<goal>toolchain</goal>
</goals>
</execution>
</executions>
<configuration>
<toolchains>
<jdk>
<version>1.6</version>
<vendor>sun</vendor>
</jdk>
</toolchains>
</configuration>
</plugin>
里面的jdk节点中的version和vendor要和我们toolchains.xml中的保持一致,否则无法定位到使用的是哪一个jdk。
- 之后就是执行maven打包命令了
mvn clean package --global-toolchains D:\Maven\apache-maven-3.6.0-bin\apache-maven-3.6.0\conf\toolchains.xml -X
其中–global-toolchains D:\Maven\apache-maven-3.6.0-bin\apache-maven-3.6.0\conf\toolchains.xml就是用来指定toolchains.xml文件路径用的。-X只是看打包的详细日志。