使用maven的toolchain

maven每个版本都有匹配的jdk,当运行不同的goal且该goal需要使用jdk的时候就使用默认的jdk,但从maven2.0版本之后,可以指定使用特定的jdk版本,这是通过maven的toolchain来实现的,可以在toolchain配置文件中指定多个jdk版本,然后在pom.xml文件中指定需要的jdk就可以实现了。但前提是该goal对应的plugin可以识别toolchain,这里的识别就是运行插件的时候会检测toolchain中是否有特定的jdk版本,目前有部分插件支持,官网上有介绍http://maven.apache.org/guides/mini/guide-using-toolchains.html

实现以上功能需要如下2点:

1、在项目pom.xml中配置maven-toolchains-plugin插件

2、在.m2/repository下设置toolchains.xml配置文件

maven-toolchains-plugin插件用于指定本次运行使用指定的jdk版本,如下配置:

  1. <plugin>
  2. <groupId>org.apache.maven.plugins</groupId>
  3. <artifactId>maven-toolchains-plugin</artifactId>
  4. <version>1.1</version>
  5. <executions>
  6. <execution>
  7. <goals>
  8. <goal>toolchain</goal>
  9. </goals>
  10. </execution>
  11. </executions>
  12. <configuration>
  13. <toolchains>
  14. <jdk>
  15. <version>1.5</version>
  16. <vendor>sun</vendor>
  17. </jdk>
  18. </toolchains>
  19. </configuration>
  20. </plugin>

maven-toolchains-plugin插件运行的时候会读取toolchains.xml文件,然后找到文件中匹配的jdk版本,同时设置本次MavenSession使用该jdk版本,如此配置之后,当运行其他可以识别toolchain的插件之后就会使用该特定版本的jdk了。

toolchains.xml的配置如下:

  1. <?xml version="1.0" encoding="UTF8"?>
  2. <toolchains>
  3. <!-- JDK toolchains -->
  4. <toolchain>
  5. <type>jdk</type>
  6. <provides>
  7. <version>1.5</version>
  8. <vendor>sun</vendor>
  9. </provides>
  10. <configuration>
  11. <jdkHome>/path/to/jdk/1.5</jdkHome>
  12. </configuration>
  13. </toolchain>
  14. <toolchain>
  15. <type>jdk</type>
  16. <provides>
  17. <version>1.6</version>
  18. <vendor>sun</vendor>
  19. </provides>
  20. <configuration>
  21. <jdkHome>/path/to/jdk/1.6</jdkHome>
  22. </configuration>
  23. </toolchain>
  24. <!-- other toolchains -->
  25. <toolchain>
  26. <type>netbeans</type>
  27. <provides>
  28. <version>5.5</version>
  29. </provides>
  30. <configuration>
  31. <installDir>/path/to/netbeans/5.5</installDir>
  32. </configuration>
  33. </toolchain>
  34. </toolchains>
时间: 2024-08-13 07:34:26

使用maven的toolchain的相关文章

部署shiro官方源码时,执行maven命令出错

部署shiro官方源码时,执行maven命令会报下面错误: [INFO] ------------------------------------------------------------------------[ERROR] Failed to execute goal org.apache.maven.plugins:maven-toolchains-plugin:1.1:toolchain (default) on project shiro-root: Cannot find ma

IDEA 配置maven

编写Maven的settings.xml文件内容如下 引入阿里镜像和maven在中国的中央仓库镜像 <?xml version="1.0" encoding="UTF-8"?> <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:sc

使用 IDEA 创建 Maven Web 项目 (异常)- Disconnected from the target VM, address: &#39;127.0.0.1:59770&#39;, transport: &#39;socket&#39;

运行环境: JDK 版本:1.8 Maven 版本:apache-maven-3.3.3 IDEA 版本:14 maven-jetty-plugin 配置: <plugin> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <configuration> <webAppSourceDirectory>${pro

maven依赖本地非repository中的jar包-依赖jar包放在WEB-INF/lib等目录下的情况客户端编译出错的处理

maven依赖本地非repository中的jar包 http://www.cnblogs.com/piaolingxue/archive/2011/10/12/2208871.html 博客分类: MAVEN 今天在使用maven编译打包一个web应用的时候,碰到一个问题: 项目在开发是引入了依赖jar包,放在了WEB-INF/lib目录下,并通过buildpath中将web libariary导入. 在eclipse中开发没有问题,但是使用maven编译插件开始便宜总是报找不到WEB-INF

eclipse 创建maven web项目

前言: 前面那一篇讲解了Maven的作用以及详细的应用,不了解Maven的具体使用,请参读:http://www.cnblogs.com/hongwz/p/5456578.html,下面来说明一下IDE构建Maven项目. 1.新建Maven项目 1.1 File -> New -> Other 1.2 选择Maven Project ,单击Next 1.3 保持默认即可,单击Next 1.4 选择Archetype为 web app,单击Next 1.5 输入一些必要信息,单击Finish

解决Maven项目pom.xml文件报xxx\target\classes\META-INF\MANIFEST.MF (系统找不到指定的路径。)问题

最近自己在公司项目修改一些代码以后,出现如题的错误,后来各种Google等,最终找到了解决办法. 错误环境:Tomcat7 + Eclipse + Maven + Spring + SpringMvc + Mybatis 错误描述: 错误解决步骤: 1.找到eclipse的project菜单选择clean...选项 2.选择Clean all projects 或者 Clean projects selectd blow(选择此项必须勾选出错的项目) 3.等着progress视图里的build完

linux安装maven及配置环境变量 配图

Maven 3.5.0 maven安装和环境变量的配置 1 下载 maven 链接:http://pan.baidu.com/s/1qXXjXfe 密码:r92r 2 解压安装包 tar zvxf apache-maven-3.5.0-bin.tar.gz 3  配置maven环境变量 vi  /etc/profile   编辑系统配置文件 #set Maven environmentexport MAVEN_HOME=/usr/local/software/dir-maven/apache-m

eclipse创建maven项目

以下内容不包含maven的配置... 好,进入主题. 首先new一个项目,选择Maven Project,点击Next 选择默认即可,继续点Next 我这里创建的是web工程,所以选择webapp后点击Next 填好 groupid和artifactId后会自动填写package,填完后点击finish.关于groupid和artifactId的解释我从网上找了下,大家可以参考下   "groupid和artifactId被统称为"坐标"是为了保证项目唯一性而提出的,如果你要

MAVEN

<distributionManagement> <repository> <id>releases-repo</id> <name>Internal Releases</name> <url>http://${nexus.proxy.location}/nexus/content/repositories/releases/</url> </repository> <snapshotRepo