Apache Maven ToolChains的使用

简介

Maven是java中非常有用和常用的构建工具,基本上现在大型的java项目都是Maven和gradle的天下了。

因为JDK的版本现在以每半年一次的速度在飞速发展。不同的JDK版本就有不同的java路径,我们在使用Maven的过程中,可能经常会需要切换JDK的版本。

一般来说我们可以在maven-compiler-plugin中配置好executable的路径。如下所示:

更多内容请访问www.flydean.com

1<build> 2 <plugins> 3 <!-- target Java 14 --> 4 <plugin> 5 <artifactId>maven-compiler-plugin</artifactId> 6 <configuration> 7 <!-- fork compilation and use the 8 specified executable --> 9 <fork>true</fork> 10 <executable>/usr/bin/javac14</executable> 11 </configuration> 12 </plugin> 13 </plugins> 14</build>

看起来还不错,但是如果想切换executable的路径可能就比较麻烦。更有问题的是,如果你是团队来发,一个人在mac环境一个人在windows环境,两边的executable的路径完全是不同的,这会导致代码冲突,和代码难以维护。

Toolchains的介绍

为了解决这个问题,Maven为我们推出了Toolchains。使用Toolchains,我们可以将这些可执行文件的路径,版本号,还有类型都定义在一个toolchains.xml文件里面。

而在pom.xml文件中只需要引用toolchains.xml中定义的别名就可以了。

针对上面的windows和linux路径不一致的问题,我们可以保证pom.xml是完全一致的,大家只需要适配自己的toolchains.xml文件即可。

Toolchains的例子

Toolchains是和pom中其他的plugin结合起来使用的,比如最常用的maven-compiler-plugin。

下面我们举一个例子来说明。首先定义toolchains.xml文件,这个文件最好放在${user.home}/.m2/中。

1<?xml version="1.0" encoding="UTF8"?> 2<toolchains> 3 <!-- JDK toolchains --> 4 <toolchain> 5 <type>jdk</type> 6 <provides> 7 <version>14</version> 8 <vendor>oracle</vendor> 9 </provides> 10 <configuration> 11 <jdkHome>/path/to/jdk/14</jdkHome> 12 </configuration> 13 </toolchain> 14 <toolchain> 15 <type>jdk</type> 16 <provides> 17 <version>11</version> 18 <vendor>oracle</vendor> 19 </provides> 20 <configuration> 21 <jdkHome>/path/to/jdk/11</jdkHome> 22 </configuration> 23 </toolchain> 24</toolchains>

上面的例子中,我们定义了2个JDK的toolchains。一个JDK14,一个JDK11。下面看下怎么在pom文件中使用。

1<plugins> 2 ... 3 <plugin> 4 <groupId>org.apache.maven.plugins</groupId> 5 <artifactId>maven-compiler-plugin</artifactId> 6 <version>3.1</version> 7 </plugin> 8 <plugin> 9 <groupId>org.apache.maven.plugins</groupId> 10 <artifactId>maven-toolchains-plugin</artifactId> 11 <version>1.1</version> 12 <executions> 13 <execution> 14 <goals> 15 <goal>toolchain</goal> 16 </goals> 17 </execution> 18 </executions> 19 <configuration> 20 <toolchains> 21 <jdk> 22 <version>14</version> 23 <vendor>oracle</vendor> 24 </jdk> 25 </toolchains> 26 </configuration> 27 </plugin> 28 ... 29</plugins>

上面的pom配置文件中,我们通过简单的引用toolchains中的定义,即可无缝的进行JDK版本的切换。

Toolchains支持

Toolchains需要Maven 2.0.9以上版本的支持。

Toolchains是需要和pom中的plugin一起使用的,下面的图中列出了toolchains支持的plugin名字和最低的版本要求。

总结

本文介绍了Apache Maven中toolchain的使用,希望大家能够在实际工作中用起来。

更多精彩内容且看:

本文作者:flydean程序那些事

本文链接:http://www.flydean.com/apache-maven-toolchains/

本文来源:flydean的博客

欢迎关注我的公众号:程序那些事,更多精彩等着您!

点赞
收藏

评论区

加载中...

相关推荐

推荐学java——Maven初识

Maven介绍Maven是Apache下开源的Java项目管理工具,对软件项目提供构建与依赖管理。其为Java项目提供了统一的管理方式,已成为业界标准。Maven下载安装官网下载地址:https://maven.apache.org/推荐下载压缩包版本,然后解压到本地不带中文路径的目录下,我这里解压在了D盘的根目录下:D:\ProgramF

java8 中 ImageIO 读取 tiff 格式的图片失败

在java8及之前版本中,jdk中的ImageIO读取图片内容会失败,解决办法使用java9或者使用第三方插件。插件可以使用TwelveMonkeysImageIO,地址:https://github.com/haraldk/TwelveMonkeys使用方法,在maven中添加依赖<dependency

Eclipse maven plugin 插件 安装 和 配置

环境准备:eclipse(Helios) 3.6maven 3.0.4maven3安装:安装Maven之前要求先确定你的JDK已经安装配置完成。Maven是Apache下的一个项目,目前最新版本是3.0.4,我用的也是这个。首先去官网下载Maven:http://www.apache

Maven的build生命周期和常用plugin

简介Maven和gradle应该是现代java程序员中使用的最多的两种构建工具。在它们出现之前,则是ant的天下。Maven为我们封装了很多构建中非常有用的操作,我们只需要执行简单的几个mvn命令即可。今天我们要讨论一下mvn命令之下的生命周期的构建。更多精彩内容且看:区块链从入门到放弃系列教程涵盖密码学,超级账本,以太

CentOS 7 安装 Gradle

       Java生态体系中有三大构建工具:Ant、Maven和Gradle。其中,Ant是由Apache软件基金会维护;Maven这个单词来自于意第绪语(犹太语),意为知识的积累,最初在JakataTurbine项目中用来简化构建过程;Gradle是一个基于ApacheAnt和ApacheMaven概念的项目自动化构建开源工具,它使用一种基于G

01.Flink笔记

Flink开发环境部署配置Flink是一个以Java及Scala作为开发语言的开源大数据项目,代码开源在github上,并使用maven来编译和构建项目。所需工具:Java、maven、Git。本次操作是在windows环境下。一、工具安装Java配置(略)maven配置1.

Apache Maven ToolChains的使用 - HelloWorld