浅谈Apache Maven ToolChains的使用

简介

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

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

<build>
	<plugins>
		<!-- target Java 14 -->
		<plugin>
			<artifactId>maven-compiler-plugin</artifactId>
			<configuration>
				<!-- fork compilation and use the
						 specified executable -->
				<fork>true</fork>
				<executable>/usr/bin/javac14</executable>
			</configuration>
		</plugin>
	</plugins>
</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/中。

<?xml version="1.0" encoding="UTF8"?>
<toolchains>
  <!-- JDK toolchains -->
  <toolchain>
    <type>jdk</type>
    <provides>
      <version>14</version>
      <vendor>oracle</vendor>
    </provides>
    <configuration>
      <jdkHome>/path/to/jdk/14</jdkHome>
    </configuration>
  </toolchain>
  <toolchain>
    <type>jdk</type>
    <provides>
      <version>11</version>
      <vendor>oracle</vendor>
    </provides>
    <configuration>
      <jdkHome>/path/to/jdk/11</jdkHome>
    </configuration>
  </toolchain>
</toolchains>

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

<plugins>
 ...
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.1</version>
  </plugin>
  <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>14</version>
          <vendor>oracle</vendor>
        </jdk>
      </toolchains>
    </configuration>
  </plugin>
  ...
</plugins>

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

Toolchains支持

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

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

总结

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

以上就是浅谈Apache Maven ToolChains的使用的详细内容,更多关于Apache Maven ToolChains的使用的资料请关注我们其它相关文章!

(0)

相关推荐

  • Idea配置Maven阿里云镜像加速的实现

    如果没有安装过maven,是用的idea自带的maven,那就是idea的安装目录下 /plugins/maven/lib/maven3这个目录. 然后在conf下打开settings.xml,加入如下代码: <mirrors> <mirror> <id>aliyunmaven</id> <mirrorOf>*</mirrorOf> <name>阿里云公共仓库</name> <url>https:/

  • 教你如何用Eclipse创建一个Maven项目

    一.Maven的安装与设置环境变量 想要创建一个Maven项目需要先安装Maven,并且设置好环境变量 1.去下载Maven 2.设置环境变量 新建变量MAVEN_HOME,值为Maven的目录X:\XXX\apache-maven-XXX 将%MAVEN_HOME%\bin添加到Path变量下 3.运行CMD,输入mvn -v后可以看到Maven的版本信息等则表示安装成功 二.创建Maven项目和依赖 2.1 创建Maven项目的两种方式 第一种创建方式:使用命令行手动创建 mvn arche

  • Java学习笔记之Maven篇

    一.maven能做什么? [本质]:将原材料(各种Java本身的类,不包括jar包)生产成为可运行的工程项目. Maven - 自动化构建工具,英文单词是专家内行的意思 1.方便管理jar包,jar包冲突? 2.打包web项目(节省jar包空间) 1.1 两大应用 [依赖管理]maven的jar包放在jar包仓库,maven只存储jar包的坐标.(代码重用思想) [一键构建]编译.测试.运行.打包.安装.部署 操作一体化 [POM:Project Object Model 工程对象模型 [pom

  • Jenkins+maven持续集成的实现

    环境 系统:centos 7 tomcat位置:/usr/local/jbreport/apache-tomcat-8.5.57 jdk位置:/usr/local/jbreport/jdk1.8.0_152 安装Jenkins 下载依赖 wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo 导入密钥 rpm --import https://pkg.jenkins.io/re

  • Java使用Maven BOM统一管理版本号的实现

    一个中大型的 Java 项目往往包含若干 JAR 包,这些 JAR 包有着不同的版本号.如果这些 JAR 包单独发布,然后直接通过版本号引用相应的 JAR 包,不同版本的兼容性维护将变得十分麻烦.为了解决这个问题,可以让一个特殊的模块引用这些 JAR 包,将版本号定义在这个模块中,模块中的 JAR 都是兼容的,对外发布时只发布这个特殊模块.这个特殊模块就是 BOM(Bill Of Materials). 著名的 Spring Boot 就使用了这种方式来管理版本号,这个模块就是 spring-b

  • idea导入maven工程的三种方法

    前言 博主发现idea中有几种不同的导入项目的方法,特此记录一下,供大家参考 提示:以下是本篇文章正文内容,下面案例可供参考 第一种导入项目的方法 第二种导入项目的方法 第三种导入项目的方法 示例点击下载 总结 博主建议使用第三种导入方式,导入maven项目,不会改变maven的项目结构 到此这篇关于idea导入maven工程的三种方法的文章就介绍到这了,更多相关idea导入maven工程内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

  • 详解idea maven nexus 常见命令配置

    maven 常见命令配置 maven常用命令 #创建项目 -D设置参数 mvn archetype:generate -DgroupId=cn.dwcode -DartifactId=dw.test.biz -Dversion=1.0.0 #创建项目 -B批处理模式构建项目 mvn archetype:generate -B -DgroupId=cn.dwcode -DartifactId=dw.test.biz -Dversion=1.0.0 mvn clean mvn compile mvn

  • Java基础之初识Maven

    一.为什么使用Maven? 首先我们先灵魂拷问一下jar包是什么?我们可以将它理解为我们写的一个Java程序,整个Java程序中由多个Java文件和依赖组成.了解清楚这个之后,接下来介绍我们为什么要使用Maven 很多小伙伴学习完Maven之后还是有个疑问,它是干什么用的?所以进入今天的内容前,我先按照自己的理解说明一下Maven Maven相当于一个仓库管理员,它有本地仓库和云端仓库两个仓库与,它在本地仓库中管理着我们创建的jar包,同样的,我们可以通过远程仓库来使用别人的jar包,当然了,它

  • IDEA创建SpringBoot的maven项目的方法步骤

    记录IDEA编程工具创建SpringBoot的maven项目过程: 新建项目 选择maven项目及JDK,点击下一步: 选择好项目路径,输入项目名称,点击完成就可以啦: 创建完成效果: 配置pom.xml文件 新建项目需要引入springboot的依赖,这里选择2.4.4版本. 完整pom文件如下: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.ap

  • 浅谈Apache Maven ToolChains的使用

    简介 因为JDK的版本现在以每半年一次的速度在飞速发展.不同的JDK版本就有不同的java路径,我们在使用Maven的过程中,可能经常会需要切换JDK的版本. 一般来说我们可以在maven-compiler-plugin中配置好executable的路径.如下所示: <build> <plugins> <!-- target Java 14 --> <plugin> <artifactId>maven-compiler-plugin</ar

  • 浅谈一下maven优缺点及使用和特点

    目录 1.什么是maven: Maven的优点: Maven的缺点: maven常见的指令: maven依赖范围: maven四大特性: 1.第一大特性: 2.第二大特性: 3.第三大特性: 4.第四大特性: 1.什么是maven: maven是Java平台下的一款项目构建和依赖管理的自动化管理工具. 项目构建:将我们的源代码.配置文件变成可执行的war包或者jar包. 依赖管理:项目需要正常运行,必须依赖一些第三方的jar包,对于这些第三方的jar包的管理,可以认为就是依赖的管理. Maven

  • 浅谈apache和nginx的rewrite的区别

    1. Nginx Rewrite规则相关指令 Nginx Rewrite规则相关指令有if.rewrite.set.return.break等,其中rewrite是最关键的指令.一个简单的Nginx Rewrite规则语法如下: rewrite ^/b/(.*)\.html /play.php?video=$1 break; 如果加上if语句,示例如下: if (!-f $request_filename) { rewrite ^/img/(.*)$ /site/$host/images/$1

  • 浅谈使用Maven插件构建Docker镜像的方法

    本文介绍了使用Maven插件构建Docker镜像的方法,分享给大家,具体如下: 工具 工欲善其事,必先利其器.笔者经过调研,有以下几款Docker的Maven插件进入笔者视野: 插件名称 官方地址 docker-maven-plugin https://github.com/spotify/docker-maven-plugin docker-maven-plugin https://github.com/fabric8io/docker-maven-plugin docker-maven-pl

  • 浅谈Maven的安装及修改为阿里云下载依赖

    使用JAVA工程管理越来越多的jar包,担心导错了,多导了,漏导了怎么办? 换一个IDE项目后项目会不会出一堆BUG,看的头皮发麻? 自己写的代码放在别人的机器上运行会不会出问题? Maven的强大毋庸置疑,当使用Maven后以上这些都不是问题,但是配置maven是一件耐心的事情,基本步骤总结如下: 一.下载 http://maven.apache.org/download.cgi 也可以直接在eclipse工具中下载,点击eclipse菜单栏Help->Eclipse Marketplace搜

  • 浅谈maven的jar包和war包区别 以及打包方法

    jar文件包括java普通类.资源文件和普通文件,在maven中即是打包src/main/java和src/main/resources资源文件夹下的所有文件.在打包的时候会自动生成MATA-INF文件夹,用于存储maven的pom信息和MANIFEST.MF文件.例如: war文件包含全部的web应用程序,即所有的java类,配置信息和jsp.js等静态资源.但是需要注意war引用war的时候会将应用war的资源全部拷贝到当前war的相同文件下,重名的文件会被替换.例如: war包依赖: <d

  • 浅谈IDEA中Maven配置问题全解决

    最近换了工作环境,以前的IDEA配置都没了,记得上次配置自己的IDEA还是在两年前?然后构建Maven项目时遇到了一些小插曲,记录下解决方案(PS:新手教程向) 1. idea中maven默认配置的坑 首先打开File->Settings 这里可以直接搜索maven,就可以进入idea的Maven配置选项. 我这里是idea默认的maven配置,可以看到默认的Maven目录是idea内置的maven插件目录,同时Maven的配置文件在操作系统的User目录下. 理论上来讲idea的默认配置这样是

  • 浅谈mac下maven的安装配置与使用

    出来实习快半年了,还有一个多月也就即将毕业了.我刚进公司的时候,项目刚刚上线,到现在接近50w日活,成长真不少(虽然曾经因为自己写的SQL性能太差把服务器CPU搞到爆血管两次).你在项目过程中写的业务代码很多,在这个过程中感到很有成就感的,但是如果你只是满足于此,就很难进步了.想要提升自身的能力,还得靠自己在空闲的时间多点去学习,学习项目中相关的技术,学习你的算法逻辑能力.这个星期我们先一起来学习经常接触的maven,maven确实是一个利器,在公司都是架构师负责搭建好项目,我们很少有机会去搭一

  • 浅谈Maven包冲突的原理及解决方法

    1.概述 Apache Maven ,是一个软件(特别是Java软件)项目管理及自动构建工具.在没有Maven的上古年代,项目中引入jar包需要手动下载一个个的去下载,但是随着代码数量的增加,引入的jar包数量自然会增加,随之而来的就是jar包冲突的问题了. 2.产生jar包冲突的原因 众所周知,一个项目中不能存在两个全限定类名一致的Class类,并且jar包的本质就是打包好的Class类文件,例如: 将 junit-jupiter-api-5.6.2.jar 文件解压后, 可以得到多个Clas

  • 浅谈Maven Wrapper

    简介 开发java项目少不了要用到maven或者gradle,对比gradle而言,可能maven要更加常用一些.要使用maven那就必要要安装maven,如果有些用户不想安装maven怎么办?或者说用户不想全局安装maven,那么可以使用项目级别的Maven Wrapper来实现这个功能. 如果大家使用IntelliJ IDEA来开发Spring boot项目, 如果选择从Spring Initializr来创建项目,则会在项目中自动应用Maven Wrapper.简单点说就是在项目目录下面会

随机推荐