2011-08-11 22 views
2

我的Hudson作業調用單個XML數據庫集合和單個日誌文件。例如。如何將Hudson的env.EXECUTOR_NUMBER傳遞給log4j屬性和Java的System.getProperty

  • /DB /項目
  • $ {}的user.home /logs/logging.log

我想注入哈德森的env.EXECUTOR_NUMBER在兩條路徑,以避免併發執行的衝突。例如。

  • /DB /項目{$ EXECUTOR_NUMBER}
  • {$}的user.home /日誌{$ EXECUTOR_NUMBER} /logging.log

我發現了以下:

現在,我已經得到了在構建目標指定哈德森的EXECUTOR_NUMBER變量,我怎麼能以此作爲一個系統屬性供Log4J的和Java的System.getProperties()類?

回答

1

您可以使用-D語法將系統屬性傳遞給任何Java進程。

mvn clean install -DEXECUTOR_NUMBER={$EXECUTOR_NUMBER} 

對於分叉運行一個測試類,你還必須配置萬無一失插件系統屬性傳遞到分叉VM:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.9</version> 
    <configuration> 
     <systemPropertyVariables> 
     <EXECUTOR_NUMBER>${EXECUTOR_NUMBER}</EXECUTOR_NUMBER> 
     </systemPropertyVariables> 
    </configuration> 
    </plugin> 
+0

這是非常相似的,我得到了什麼。我正在通過運行'mvn clean install -DTestClassTest -DEXECUTOR_NUMBER = {$ EXECUTOR_NUMBER}'來測試它,然後將每個System.getProperty().keySet()記錄到一個日誌文件並且它不包含執行編號 – PhilJ

+0

哦,是我們在談論測試課?然後,您需要將系統屬性添加到surefire插件。更新了我的答案。 –

+0

感謝您的幫助肖恩。通過在Maven-osgi-test-plugin,configuration,argLine的主項目的pom文件中添加-DEXECUTOR_NUMBER = $ {EXECUTOR_NUMBER},然後在Hudson的作業配置,構建,屬性部分添加EXECUTOR_NUMBER = $ {EXECUTOR_NUMBER} 。由於某種原因,我沒有Maven-surefire插件。 – PhilJ

相關問題