2015-06-28 25 views
2

我的問題可能看起來有點容易回答,但我無法真正解決它。我們如何將參數值從Jenkins作業傳遞給pom.xml,然後傳遞給我在JAVA代碼中的系統屬性?

我正在爲我的構建配置Jenkins作業的項目工作。

我到目前爲止所做的工作是我做了一個配置了pom.xml路徑和兩個目標'clean test'的maven作業。當我運行它時,它工作得很好。

現在我想通過Jenkins的參數值BROWSER,它可能具有像Firefox,Chrome的價值,我希望它傳遞給java代碼,以便可以打開特定的瀏覽器。

我用的系統屬性在我的代碼:

protected static final String BROWSER = System.getProperty("BROWSER","chrome");

現在我想通過從詹金斯的價值,POM,然後Java代碼。

這是我的聚甲醛是錯誤的:

<plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-surefire-plugin</artifactId> 
       <version>2.18.1</version> 
       <configuration> 
        <systemPropertyVariables> 
         <BROWSER>${env.BROWSER}</BROWSER> 
        </systemPropertyVariables> 
       </configuration> 
      </plugin> 

但在這裏它給了我錯誤,如cannot resolve symbol env.BROWSER

解決方法: 作爲一種變通方法我已經在詹金斯目標的命令是這樣的:

clean test -DREMOTE_DRIVER=${REMOTE_DRIVER} -DSELENIUM_HOST=${SELENIUM_HOST} -DBROWSER=${BROWSER} 

但我認爲它不是理想的做法。

我已經在我的Jenkins構建參數名稱 - 「BROWSER」中選擇了'firefox''chrome'和'ie'。

現在我只是把它叫做pom(我用$ {env.BROWSER}),然後傳給我的系統屬性在java代碼中。 (它不適用於我)

回答

2

jenkins中的環境屬性不是JVM的系統屬性。要設置屬性,您需要使用命令行進行設置。 export BROWSER =chrome 或 您可以將它設置在您的jenkins構建配置的This build is parameterized部分。

+0

可能我在我的問題中沒有清楚。對不起,但我已經在我的生成參數。與名稱BROWSER一樣,有3個選項「chrome」,「firefox」和「ie」。現在我把這個從jenkins傳遞給pom,從pom傳遞給我的java代碼中的系統屬性。 – Atishay

+0

當你檢查'這個構建是參數化的',那麼你將能夠添加參數到構建,jenkins將在構建之前替換任何標記。假設你在jenkins配置中設置了'BROWSER'參數,那麼你可以在需要設置瀏覽器的pom中使用'%BROWSER%'。你可以設置一個默認值,或者你可以解析'-DBROWSER = chrome'的值,你可以在build命令上配置jenkins。例如。 'mvn clean install -DBROWSER = chrome' – Eranda

+0

嗨Eranda,非常感謝您的回答。但是,如果配置我的POM這樣的<配置> **%BROWSER%** 這是行不通的。我的詹金斯工作有一個名稱爲「BROWSER \t 」的參數,但該值未通過。但是,如果代替POM中的「%BROWSER%」,我使用Firefox就可以正常工作。 – Atishay

相關問題