如何为maven指定特定的jdk版本来构建我的项目?

时间:2012-09-19 14:51:40

标签: maven

我的问题是:测试用例在本地是绿色的,但是由于不支持的jdk版本,有些在hudson服务器上失败了。本地是ibm jdk1.6 sr4 windows,但是hudson服务器安装了ibm jdk1.6 sr9 linux。 “不支持将此Java虚拟机与Blaze Advisor一起使用,因为java.beans.Introspector的实现无法通过验证。”

我被告知Hudson服务器无法更改为其他jdk,所以我认为有什么工作可以绕过那些失败? 我可以告诉maven用特定的jdk编译项目吗?比如,使用sr4的1.6版本,而不是sr9。此外,我需要maven下载sr4作为依赖coz在服务器上没有这个版本。

我搜索时似乎很难做到这一点。那我还有什么选择呢?

感谢您的任何建议。

3 个答案:

答案 0 :(得分:1)

Maven应该从JAVA_HOME中指定的java开始,如果你需要使用不同的版本,我会使用工具链插件来运行你的构建与指定的jdk版本。它需要在服务器上安装该版本。

http://maven.apache.org/guides/mini/guide-using-toolchains.html

您需要将插件添加到您的pom并添加toolchains.xml文件。

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-toolchains-plugin</artifactId>
    <version>1.0</version>
    <executions>
      <execution>
        <phase>validate</phase>
        <goals>
          <goal>toolchain</goal>
            </goals>
      </execution>
    </executions>
    <configuration>
      <toolchains>
        <jdk>
          <version>1.5</version>
          <vendor>sun</vendor>
        </jdk>
      </toolchains>
    </configuration>
  </plugin>

toolchains.xml文件添加到.m2文件夹,该文件夹指定了jdk的安装位置

<?xml version="1.0" encoding="UTF8"?>
<toolchains>
  <toolchain>
     <type>jdk</type>
     <provides>
         <version>1.5</version>
         <vendor>sun</vendor>
         <id>default</id>
     </provides>
     <configuration>
        <jdkHome>/path/to/jdk/1.5</jdkHome>
     </configuration>
  </toolchain>

答案 1 :(得分:0)

你确定吗? Hudson应该支持切换JDK,我已经在Jenkins中完成了。在最坏的情况下,您可以在Hudson构建中指定JAVA_HOME env变量。在maven中改变是不可能的,因为maven本身需要JDK才能启动。

答案 2 :(得分:0)

您可以在maven-compiler-plugin

中进行配置
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>

您还可以使用配置文件-P根据环境设置版本。