工具链使用指南
什么是工具链?
Maven 工具链为插件提供了一种在构建过程中发现要使用的 JDK(或其他工具)的方法,而无需在每个插件或每个 中配置它们pom.xml,或者强制在构建项目的每台机器中精确定位。
将 Maven 工具链应用于 JDK 工具链后,现在可以使用独立于运行 Maven 的特定版本的 JDK 构建项目。想想如何在 IDEA、NetBeans 和 Eclipse 等 IDE 中设置 JDK 版本,或者如何使用 Maven 中的旧 JDK 与最近的 JDK 一起编译。
先决条件
工具链仅适用于 Maven 2.0.9 及更高版本。有关其设计和实现的更多详细信息,请参阅工具链。
以下是一些工具链感知的插件,使用了工具链类型:
| 工具链类型 | 插入 | 从...开始 | 托管在 |
|---|---|---|---|
| jdk | maven-compiler-plugin |
2.1 | apachemaven |
| jdk | maven-jarsigner-plugin |
1.3 | apachemaven |
| jdk | maven-javadoc-plugin |
2.5 | apachemaven |
| jdk | maven-pmd-plugin |
3.14.0 | apachemaven |
| jdk | maven-surefire-plugin |
2.5 | apachemaven |
| jdk | animal-sniffer-maven-plugin |
1.3 | 魔精屋 |
| jdk | cassandra-maven-plugin |
0.7.0-1 | 魔精屋 |
| jdk | exec-maven-plugin |
1.1.1 | 魔精屋 |
| jdk | jdiff-maven-plugin |
1.0-beta-1-SNAPSHOT | 魔精屋 |
| jdk | keytool-maven-plugin |
1.4 | 魔精屋 |
| protobuf | maven-protoc-plugin |
0.3.2 | github |
在项目中使用工具链
为了使用工具链,您需要配置两个基本组件:
- 在
maven-toolchains-plugin您的项目 POM 中, toolchains.xml构建机器上的文件。
这maven-toolchains-plugin是一个设置工具链以供项目中工具链感知插件使用的工具链。
例如,您想使用与运行 Maven 的版本不同的 JDK 版本来构建您的项目,您可以通过此插件配置您要使用的版本,pom.xml如下所示:
<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>1.5</version>
<vendor>sun</vendor>
</jdk>
</toolchains>
</configuration>
</plugin>
...
</plugins>正如您在上面的示例中看到的,将使用带有<version>“1.5”和<vendor>“sun”的 JDK 工具链。现在插件如何知道这个 JDK 安装在哪里?这是toolchains.xml文件的来源。
该toolchains.xml文件(见下文)是您设置工具链安装路径的配置文件。这个文件应该放在你的${user.home}/.m2目录中。当maven-toolchains-plugin执行时,它会查找toolchains.xml文件,读取它并查找与插件中配置的工具链要求相匹配的工具链。在我们的示例中,这将是一个带有<version>“1.5”和<vendor>“sun”的 JDK 工具链。一旦找到匹配项,插件就会存储要在 MavenSession 中使用的工具链。正如您在toolchains.xml下面看到的,确实有一个配置了<version>“1.5”和<vendor>“sun”的 JDK 工具链。所以当maven-compiler-plugin我们在我们的pom.xml上面执行时,它会看到在 MavenSession 中设置了一个 JDK 工具链,因此将使用该工具链(/path/to/jdk/1.5对于我们的示例来说就是安装的 JDK)来编译源代码。
从Maven 3.3.1开始,您可以toolchains.xml使用该--global-toolchains file选项将文件放在您喜欢的任何位置,但建议将其定位到${user.home}/.m2/.
<?xml version="1.0" encoding="UTF-8"?>
<toolchains>
<!-- JDK toolchains -->
<toolchain>
<type>jdk</type>
<provides>
<version>1.5</version>
<vendor>sun</vendor>
</provides>
<configuration>
<jdkHome>/path/to/jdk/1.5</jdkHome>
</configuration>
</toolchain>
<toolchain>
<type>jdk</type>
<provides>
<version>1.6</version>
<vendor>sun</vendor>
</provides>
<configuration>
<jdkHome>/path/to/jdk/1.6</jdkHome>
</configuration>
</toolchain>
<!-- other toolchains -->
<toolchain>
<type>netbeans</type>
<provides>
<version>5.5</version>
</provides>
<configuration>
<installDir>/path/to/netbeans/5.5</installDir>
</configuration>
</toolchain>
</toolchains>请注意,您可以在toolchains.xml文件中配置任意数量的工具链。



