我的問題可能看起來有點容易回答,但我無法真正解決它。我們如何將參數值從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代碼中。 (它不適用於我)
可能我在我的問題中沒有清楚。對不起,但我已經在我的生成參數。與名稱BROWSER一樣,有3個選項「chrome」,「firefox」和「ie」。現在我把這個從jenkins傳遞給pom,從pom傳遞給我的java代碼中的系統屬性。 – Atishay
當你檢查'這個構建是參數化的',那麼你將能夠添加參數到構建,jenkins將在構建之前替換任何標記。假設你在jenkins配置中設置了'BROWSER'參數,那麼你可以在需要設置瀏覽器的pom中使用'%BROWSER%'。你可以設置一個默認值,或者你可以解析'-DBROWSER = chrome'的值,你可以在build命令上配置jenkins。例如。 'mvn clean install -DBROWSER = chrome' – Eranda
嗨Eranda,非常感謝您的回答。但是,如果配置我的POM這樣的<配置> **%BROWSER%** systemPropertyVariables> 配置>這是行不通的。我的詹金斯工作有一個名稱爲「BROWSER \t 」的參數,但該值未通過。但是,如果代替POM中的「%BROWSER%」,我使用Firefox就可以正常工作。 –
Atishay