2009-04-14 69 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

相關問題