2009-04-14 65 views
30

我有一些Hudson从站上运行的项目。我希望其中的一个在Java6下运行Ant,而不是默认的(在我的环境中是Java5)。如何配置Hudson作业以使用特定的JDK?

在项目配置的看法,我希望能找到可以:

  • 一个明确的选项允许我设置为使用这个项目自定义JDK的位置。
  • 一种为此项目设置自定义环境变量的方法,它允许我将 JAVA_HOME设置为JDK6位置。这将使Ant拿起并根据需要在Java6上运行。

有没有办法做到上述任何一种?如果其中一个设施可用,我看不到如何访问它。我在哈德森1.285上跑。

如果可能,我宁愿避免使用“执行shell”操作而不是“invoke Ant”操作:我的slave在z/OS上,Hudson似乎没有在此平台上正确创建临时shell脚本可能是一个编码问题)。

+1

可能要折腾这一个到Hudson用户邮件列表:https://hudson.dev.java.net/mailing-lists.html配置从站可能没有很好的记录/广泛理解在这里 – 2009-04-14 17:13:17

+0

谢谢,我已经这样做:http://是.gd/szcr。同时,我的解决方法是修改从服务器上的主Ant脚本($ ANT_HOME/bin/ant)以检查JOB_NAME env var并相应地设置JAVA_HOME(JOB_NAME env var由Hudson自动设置)。 – rewbs 2009-04-15 14:32:00

回答

25

事实证明,如果你使参数化的构建,你添加的任何字符串参数成为环境变量。通过这种方法,可以为构建设置任何环境变量,包括由Ant拾取的JAVA_HOME。

所以对我来说最好的解决办法是:

  1. 在作业配置页面勾选“此版本是参数化”
  2. 添加一个名为JAVA_HOME,并设置为JDK位置的默认值的新字符串参数

构建字符串参数变成环境变量并不明显,但是一旦您知道它们的确如此,就很容易以这种方式设置JDK。

Hudson邮件列表recommended another approach上的开发人员在节点配置中使用主JDK配置和覆盖...但只是设置JAVA_HOME env var对我来说似乎更容易。

0

为此项目设置自定义环境变量的方法,这将允许我将JAVA_HOME设置为JDK6位置。这将使Ant拿起并根据需要在Java6上运行。

当为Ant配置“构建”步骤时,在“调用Ant”下,如果单击“高级”,则可以设置自定义Java选项。屏幕上的帮助说:

如果您的构建需要自定义ANT_OPTS,请在此处指定。通常这可以用来指定要使用的Java内存限制,例如-Xmx512m。请注意,其他Ant选项(如-lib)应转到“Ant目标”字段。

但是,我有一种感觉,这对JDK无法运行。

您是否为/Configure System下的此Hudson实例配置了多个JDK安装?

+0

您的感觉是正确的:ANT_OPTS如果将自定义JVM选项传递给JDK,并且不影响要使用的JDK。 但是,我不知道允许多个JDK安装的Configure System视图。不知道这将如何为奴隶工作,但我会看看 - 谢谢! – rewbs 2009-04-14 15:02:02

+2

经过仔细观察,似乎Manage Hudson - > Configuration System下的JDK仅用于主服务器上的JDK,而不是从服务器上的JDK。我是否错过了一些东西 - 有没有办法在一个slave上设置多个JDK? Hudson 1.285的“配置节点”视图中没有JDK选项。 – rewbs 2009-04-14 15:13:17

27

我们在我们的Hudson实例中配置了Java 5和Java 6。

在Manage Hudson - > Configuration System下,您可以添加多个JDK并指定JAVA_HOME的路径。在每个作业的配置中,您随后选择要在哪个JDK上运行该作业。

+0

查看对上一个答案的第二个评论 - 看起来这个选项允许在主站上有多个JDK,但不能在从站/节点上。 – rewbs 2009-04-14 15:14:07

0

你可以这样使用。

in批处理命令窗口intially u可以设置变量名称JAVA_HOME,将此自定义变量名称分配给PATH变量。那么你可以调用一个ant脚本来选择特定的文件。

实施例:

组JAVA_HOME = C:/java/jdk1.6.1

PATH =%JAVA_HOME%/ bin中;%PATH%

ant构建。xml

0

看看Setenv插件。在那里,你可以像设置JAVA_HOME 变量= C:/java/jdk1.6.1 PATH =%JAVA_HOME%/ bin中;%PATH%

2

我们通过使用两个不同的Java哈德森节点管理这个问题。一个用于Java 6,另一个用于Java 7.然后根据需要将作业分配给不同的节点。

2

单独的从属代理可以配置为在您运行它们的系统上使用特定的JDK。

管理节点>从站>配置>环境变量

例如

名称:JAVA_HOME 值:C:\ Program Files文件(x86)的\的Java \ jdk1.6.0_45 \

1

的最好的方法是,

  1. 将所有必需的JDK安装到您的系统。
  2. 将这些添加到配置页面中JDK标题下的jenkins。
  3. 安装Maven插件的信息詹金斯
  4. 重启詹金斯
  5. 转到你的工作配置页面。
  6. 选择需要JDK从JDK组合框下的Maven信息插件配置出现
  7. 构建它
  8. 享受!
0

我有一个问题,安装的JDK是JDK 8,而我想让詹金斯使用JDK 7。于是,经过对詹金斯安装JDK 7构建中,

我加入了JDK路径詹金斯配置:

詹金斯 - >管理詹金斯 - >配置系统 - > JDK - >添加JDK名称和路径

此外, 编辑jenkins-runner.sh: 添加一行:

出口JAVA_HOME = “”

更改最后两行改为:

回声 “/斌/ java的” $ javaArgs罐子 “$战” 的$ args

EXEC “/斌/ java的” $ javaArgs罐子 “$战” 的$ args

相关问题