【问题标题】:Configuring Maven with two versions of Java使用两个版本的 Java 配置 Maven
【发布时间】:2010-07-12 09:00:57
【问题描述】:

我需要两个版本的 Java 即。 Java5和Java6在同一台机器上,因为我的一些项目支持Java6,一些支持Java5。所以我把Java6的路径放在JAVA_HOME中,把Java5的路径放在JAVA5_HOME中。我在 PATH 变量中添加了两个 JAVA_HOME。

但是当我执行 java -version 时,默认情况下我会得到以下结果

java version "1.6.0" Java(TM) SE Runtime Environment (build 1.6.0-b105) Java HotSpot(TM) Client VM (build 1.6.0-b105, mixed mode, sharing)

Java5 是否可以与 Java6 一起获得??

我也想知道,是否可以使用两个版本的 Java(Java1.6 和 Java1.5)配置 maven2 并在运行时使用所需的版本来构建项目?

【问题讨论】:

    标签: java maven-2


    【解决方案1】:

    maven-compiler-plugin site 记录了实现此目的的一种方法。

    就我个人而言,我首先会尝试使用编译 mojo (documented here) 的 sourcetarget 参数,因为这将允许您在不切换到另一个 Java 编译器的情况下同时定位 1.5 和 1.6。

    【讨论】:

    • 更改编译器级别!= 使用另一个 JDK(并且不会阻止您使用以前版本中不存在的类)。
    • 更改编译器 - 是的,正如 Pascal 所说。但是带有配置文件的编译器插件是一个不错的选择。
    【解决方案2】:

    所以我把Java6的路径放在JAVA_HOME中,把Java5的路径放在JAVA5_HOME中。我在 PATH 变量中添加了两个 JAVA_HOME。

    这不是一个好主意(无论如何,其中一个将首先出现在路径上)。您应该只添加 JAVA_HOME 并使其指向您要使用的 JDK(并按需切换)。

    我也想知道,是否可以使用两个版本的 Java(Java1.6 和 Java1.5)配置 maven2 并在运行时使用所需的版本来构建项目?

    没有。 Maven 使用 JAVA_HOME,一次只能使用一个 JDK。

    如果您想使用 2 个不同的 JDK 构建同一个项目,最好的选择是使用像 Hudson 这样的 CI 引擎并设置构建矩阵。

    【讨论】:

    • 我在 mvn.bat 中将 JAVA_HOME 更改为 JAVA5_HOME,并使用 Java5 构建项目。我想知道是否有任何设置我们可以同时提供 JAVA_HOME 和 JAVA5_HOME 并在运行时或以任何其他方式选择编译器?
    • @deejay08:正如我所写,不。而且我看不出修改mvn.bat 的意义。更改JAVA_HOME 环境变量,而不是根据JAVA_HOME 修改所有脚本。
    【解决方案3】:

    最近,在 Maven 工作了七年之后,我了解了 toolchains.xml。 Maven 甚至记录并支持它,从 2.0.9 toolchains documentation

    所以我在 ~/.m2/ 文件夹中添加了一个 toolchain.xml 文件,内容如下:

    <toolchains xmlns="http://maven.apache.org/TOOLCHAINS/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/TOOLCHAINS/1.1.0 http://maven.apache.org/xsd/toolchains-1.1.0.xsd">
     <!-- JDK toolchains -->
     <toolchain>
       <type>jdk</type>
       <provides>
         <version>1.8</version>
         <vendor>sun</vendor>
       </provides>
       <configuration>
         <jdkHome>/opt/java8</jdkHome>
       </configuration>
     </toolchain>
     <toolchain>
       <type>jdk</type>
       <provides>
         <version>1.7</version>
         <vendor>sun</vendor>
       </provides>
       <configuration>
         <jdkHome>/opt/java7</jdkHome>
       </configuration>
     </toolchain>
    </toolchains>
    

    它允许您定义 Maven 可以使用哪些不同的 JDK 来构建项目,而与 Maven 运行时使用的 JDK 无关。有点像在 IDE 中在项目级别定义 JDK。

    【讨论】:

      猜你喜欢
      • 2016-06-25
      • 1970-01-01
      • 1970-01-01
      • 2012-06-22
      • 1970-01-01
      • 1970-01-01
      • 2015-08-04
      • 1970-01-01
      相关资源
      最近更新 更多