2013-09-24 39 views
0

pom.xml包含執行腳本MVN包的一部分

<plugin>                
     <artifactId>maven-war-plugin</artifactId> 
     <version>2.3</version>           
      <configuration>             
       <warName>${project.artifactId}</warName> 
       <outputDirectory>${wlp.install.dir}/usr/servers/liberty/apps</outputDirectory> 
       <failOnMissingWebXml>false</failOnMissingWebXml> 
      </configuration>    
    </plugin> 

當我運行mvn package我可以看到這個步驟運行:

[INFO] --- Maven的戰爭插件:2.3 :戰爭(默認戰爭)@ frontEnd ---

太棒了。但是,我還想在war文件創建之前運行一個shell腳本。我試過maven-war插件之前加入

<plugin>                
    <artifactId>maven-antrun-plugin</artifactId>      
    <version>1.7</version>           
    <configuration>             
     <tasks>              
      <exec dir="${basedir}" 
       executable="${basedir}/src/main/webapp/concat"/> 
     </tasks>              
    </configuration>             
</plugin> 

,但它不運行。我在mvn的輸出中甚至沒有看到antrun。將<tasks>元素添加到<configuration>,maven-war-plugin也不會做任何事情。

我能做些什麼有行家只需運行一個腳本的一部分mvn package

回答

1

在pom.xml的位置是無關緊要的,則必須結合行家-antrun-插件執行到正確的生命週期階段(例如編譯),如下所示:

<plugin> 
    <artifactId>maven-antrun-plugin</artifactId> 
    <version>1.7</version> 
    <executions> 
     <execution> 
     <phase> <!-- a lifecycle phase --> </phase> 
     <configuration> 
      <target> 

      <!-- 
       Place any Ant task here. You can add anything 
       you can add between <target> and </target> in a 
       build.xml. 
      --> 

      </target> 
     </configuration> 
     <goals> 
      <goal>run</goal> 
     </goals> 
     </execution> 
    </executions> 
    </plugin> 

詳情請參閱The maven-antrun-plugin Usage PageThe Maven Introduction to the Build Lifecycle作進一步參考。

+0

我怎麼知道我可以使用哪個階段? –

+0

當你想去的地方戰爭插件運行,你必須選擇一個較早的生命週期階段的包裝階段之前,你的螞蟻插件執行。這取決於你的螞蟻插件調用哪個階段選擇的先決條件。編譯階段似乎是一個不錯的選擇。 – Torsten

+0

我也應該注意到,''應該是一個孩子'',不''