2010-05-17 59 views
2

我有以下用例: 我的應用程序是以Ant腳本啓動的,它向用戶詢問關於項目配置(數據庫設置等)的幾個問題。這些設置存儲在屬性文件中。使用Maven Ant任務在運行時更改pom.xml中的屬性。可能嗎?

然後我想通過Maven Ant Tasks在我的Ant腳本中運行Maven,它應該用屬性文件的屬性替換我的pom.xml中的預定義屬性。 我不想更改pom.xml。

有沒有辦法做到這一點? 在此先感謝!

BTW i already tried a similar approach with maven only, which seems to be impossible at the moment

回答

7

可以使用-D重新定義Maven的命令行上的屬性,這些將覆蓋項目文件的屬性。

例如,在pom.xml的

<properties> 
    <myProp>A</myProp> 
    </properties> 

在Ant的build.xml,你可以然後調用像

mvn -DmyProp=B install 

mvn命令行,將設置myProp項目到B 。 mvn ant task page討論了使用宏來調用maven命令行。這可以很容易地定製,以傳遞額外的屬性。

要單獨在maven中執行此操作,請使用exec插件啓動maven,以與使用ant:java任務完成相同的方式傳遞命令參數。

1

您是否嘗試通過<copy> ant任務取代飛行中的屬性?

假設您的屬性在文件settings.properties。定義要圍繞它們在pom.xml中替換的屬性@,可以複製pom文件並同時替換某些屬性。例如: -

<copy file='pom.xml' toFile='real-pom.xml'> 
    <filterset filtersfile='settings.properties' /> 
</copy> 

然後調用行家:

MVN -f真實的pom.xml