2014-09-22 51 views
1

我有一個大型的多模塊maven項目。我想在後走動一些生成的文件編譯階段,所以我增加了以下插件父pom.xml文件:爲maven多模塊項目中的每個模塊加載相同的ant構建文件?

<plugin> 
    <artifactId>maven-antrun-plugin</artifactId> 
    <version>1.7</version> 
    <executions> 
    <execution> 
     <id>move-stuff</id> 
     <phase>compile</phase> 
     <goals> 
     <goal>run</goal> 
     </goals> 
     <configuration> 
     <target> 
      ... lots of ant stuff here ... 
     </target> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 

這工作,但有很多螞蟻任務的東西target元素之間,這應該正確地進入螞蟻build.xml文件。問題是,我需要在插件指定build.xml文件的位置:

<configuration> 
    <ant antfile="build.xml"/> 
</configuration> 

但該文件的位置,不能以這樣一種方式,它可以通過雙方家長pom.xml和加載指定每個子模塊中的pom.xml。例如,不能使用${project.basedir}/build.xml,因爲它給出了與每個模塊相關的結果,而不是相對於頂級項目目錄。同樣,不能使用../build.xml,因爲這隻適用於子模塊,不適用於父模塊。

有沒有一種方法可以指定maven-antrun-plugin中的antfile位置,該位置適用於我的項目中的每個模塊?或者我堅持在我的pom.xml文件中留下很多螞蟻代碼?這個

+0

有沒有辦法可以避免父母需要做任何螞蟻的東西?或者,如何分離到兩個螞蟻文件,由父母和孩子poms完成的任務? – Raghuram 2014-09-22 12:02:35

+0

我可以通過向每個子模塊添加'maven-antrun-plugin'來分開,指向一個常見的位置(例如_ ../build/xml_),儘管這意味着很多複製,並且引入了一個醜陋的外部依賴。希望避免這兩種情況,但它可能是唯一的選擇。 – 2014-09-22 23:40:33

回答

0

的一種方法是使用user.dir屬性:

<target> 
     <ant antfile="${user.dir}/build.xml"/> 
    </target> 

當然,當你從根項目觸發您的構建這僅適用。