2011-09-26 89 views
14

我已經閱讀了一些關於如何從maven插件設置屬性的問題(其中大部分都討論了應用程序的版本號)。 看來沒有簡單的方法來做到這一點,我發現最好的解決方案是有一個filter.properties文件,從插件更新並由主pom文件使用來過濾所需的資源。從插件設置maven屬性

我嘗試另一種解決辦法我讀這從Maven的文檔(Maven filter plugin)後:

變量可以包括在你的資源。這些由$ {...}定界符表示爲 的變量可以來自系統屬性,您的 項目屬性,來自過濾器資源和命令 一行。

我發現有趣的是,變量可以從系統屬性中讀取。所以,我修改了我的插件來設置系統屬性是這樣的:

System.setProperty("currentVersion", appCurrentVersion); 

然而,過濾資源似乎並沒有看到它的值。 有人能告訴我這種方法有什麼問題嗎?

更新:我正在運行我的插件驗證階段。

非常感謝。

回答

18

不要把它設置爲系統屬性,將其設置爲Maven項目屬性

// inject the project 
/** @parameter default-value="${project}" */ 
private org.apache.maven.project.MavenProject project; 

// and in execute(), use it: 
project.getProperties().setProperty("currentVersion", appCurrentVersion); 

參見:

+0

完美!謝謝,肖恩。 – PaquitoSoft

3

Maven在initialize phase中設置屬性。我假設在這個階段,maven加載系統屬性。之後,maven不會再次加載系統屬性。如果您嘗試在此階段之後添加系統屬性,而不是未加載。

嘗試運行您的插件validate phase

+0

我已經運行插件在驗證階段。對不起,我之前沒有提到它。 – PaquitoSoft