1

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

有人告诉我 Hudson 服务器不能更改为其他 jdk,所以我认为有什么办法可以绕过这些故障吗?我可以告诉 maven 用特定的 jdk 编译项目吗?就像,1.6 版本带有 sr4,而不是 sr9。另外我需要 maven 下载 sr4 作为依赖,因为服务器上没有这个版本。

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

感谢您的任何建议。

4

3 回答 3

2

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>
于 2012-09-19T15:46:16.607 回答
0

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

于 2012-09-19T15:03:00.800 回答
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根据环境设置版本。

于 2012-09-19T15:36:51.557 回答