Apache Maven ToolChains的使用

简介

Maven是java中很是有用和经常使用的构建工具,基本上如今大型的java项目都是Maven和gradle的天下了。java

由于JDK的版本如今以每半年一次的速度在飞速发展。不一样的JDK版本就有不一样的java路径,咱们在使用Maven的过程当中,可能常常会须要切换JDK的版本。linux

通常来讲咱们能够在maven-compiler-plugin中配置好executable的路径。以下所示:程序员

更多内容请访问 www.flydean.com
<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的路径彻底是不一样的,这会致使代码冲突,和代码难以维护。apache

Toolchains的介绍

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

而在pom.xml文件中只须要引用toolchains.xml中定义的别名就能够了。windows

针对上面的windows和linux路径不一致的问题,咱们能够保证pom.xml是彻底一致的,你们只须要适配本身的toolchains.xml文件便可。oracle

Toolchains的例子

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

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

<?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的使用,但愿你们可以在实际工做中用起来。

更多精彩内容且看:

本文做者:flydean程序那些事

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

本文来源:flydean的博客

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

相关文章
相关标签/搜索