2011-12-26 44 views
1

我們使用maven filtering作爲屬性文件,在其中我們從Jenkins服務器注入內部版本號和時間。在Maven編譯階段之前向屬性文件添加條目

如果我們可以動態地將屬性添加到我們的app.local.properties文件中,這樣會很酷,因此不會強迫每個項目維護人員添加它們(一次性操作,但惱人的永遠不會少)。

我想

  • 添加PARAMS到屬性文件,過濾器在插件踢前
  • 如果目標屬性文件不存在 - >創建它,然後添加。
  • 我需要編輯目標目錄中的屬性文件(src/main/resources目錄應保持不變)。

很高興有:

  • 添加配置設置,只有當他們沒有在文件中已經定義(以避免重複條目手動添加)

有一些Maven插件/鉤,我可以挖掘做到這一點?

回答

0

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

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

+0

謝謝,這個問題的解決方案比所有其他解決方案少得多。通過「吮吸」,我的意思是,現在需要對MySpecialExtension進行更改,以避免版本衝突(如果您希望重新構建7個月前的工件)。我接受這一點,因爲它似乎是最適合的解決方案。 – 2013-05-16 15:35:23

+0

多數民衆贊成真 - 至少對特定版本的MySpecialExtension的依賴可以清楚地說明在「消費」POM內。 – Ichthyo 2013-06-03 02:15:18

0

我在這裏看到一個衝突:

  • 添加PARAMS到屬性文件,過濾器在插件踢前

所以你需要在src/main/resources編輯屬性,如過濾器插件的工作原理。在這些,但在同一時間:

  • 我需要編輯目標目錄中的屬性文件(src /主要/資源目錄應保持不變)。

我的理解是,你想以某種方式做「過濾」過濾。我不認爲Maven機制可以做到這一點;我會完全用Antrun plugin(不包括來自Maven處理的屬性文件)完成,我將在process-resources階段調用它。編輯和保存屬性文件有propertyFile task;保存更改後,您可以使用regexp task重新處理該文件,以應用您的過濾器。

+0

這聽起來很像是我會做,我會嘗試和更新。 – 2011-12-28 17:35:29

相關問題