2012-01-03 93 views
1

我試圖創建一個Maven插件,用於在面向服務的體系結構中獨立運行測試。給定一個項目佈局,如:在兄弟模塊之間共享動態生成的屬性

Service 
|- webapp 
|- int-test 

我想:

  1. 通過呼喚配置「屬性供應商」動態生成的屬性值。一個這樣的房產供應商可能會呼叫Web服務以獲取未使用的賬戶ID,根據該賬戶ID進行測試數據的分級。
  2. 將這些值替換爲webapp和int-test模塊的屬性文件。
  3. 啓動web應用程序
  4. 運行測試。

我認爲這樣做將是插件的配置添加到父POM的最佳方式,然後用戶可以簡單地簽出項目,cd到父POM的目錄和執行該插件的目標運行鍼對本地運行的服務進行的測試。

我不太確定如何執行上述第2步。理想情況下,我寧願沒有插件更改int-test/src/test/resourceswebapp/src/main/config中的屬性文件,因爲這樣人們可能會錯誤地檢查這些更改。我寧願替換隻出現在各自的target/目錄中。

我已經看到過濾可以用來解決類似的問題,但我還沒有看到任何解決方案涉及共享模塊之間動態生成的屬性。

任何建議將不勝感激。

+0

怎麼樣,寫你的動態生成文件屬性文件。然後使用maven屬性插件[1]讀取屬性。然後根據這些屬性運行過濾[2]。 (AFAIU,我們可以給maven屬性作爲過濾變量) [1] http://haroon.sis.utoronto.ca/zarar/properties-maven-plugin/index.html [2] http:// maven。 apache.org/plugins/maven-resources-plugin/examples/filter.html – 2012-01-04 04:40:10

+0

問題是,這些屬性需要在父級POM級別讀取,然後過濾到子項目的屬性文件中。 – 2012-01-04 15:07:31

回答

0

您可以構建自定義maven構建擴展,並從cetntral服務動態檢索這些屬性,並在構建過程開始之後將它們注入內存中的POM。事實上,我們在公司設置中解決了這個問題。

我剛剛發佈了一個完整的配方to this Stackoverflow answer