2011-11-02 79 views
1

我想用maven構建一個grails項目。就其本身而言,這不會那麼難。但要求我項目中的pom.xml有一定的企業pom,因爲它是父項。如何覆蓋在父pom.xml中定義的maven-war-plugin的參數?

父POM中有很多事情是我們在這裏部署過程很重要,但它也包含以下內容:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-war-plugin</artifactId> 
    <configuration> 
    <warSourceDirectory>webapp</warSourceDirectory> 
    <webXml>webapp/WEB-INF/web.xml</webXml> 
    <archive> 
     <manifest> 
     <addClasspath>true</addClasspath> 
     </manifest> 
    </archive> 
    </configuration> 
</plugin> 

如果我理解正確的話,這告訴Maven來尋找一個web.xml文件webapp/WEB-INF。在這一點上,我的項目沒有web.xml文件,儘管它可能更晚。我如何可以覆蓋web.xml文件的位置的這個規範,這樣會行家:

  1. 不會去尋找web.xml檔案。
  2. 在其他地方查找web.xml文件。

正因爲如此,編譯和運行測試後,Maven的報道:

Tests PASSED - view reports in target\test-reports 
[INFO] [war:war {execution: default-war}] 
[INFO] Packaging webapp 
[INFO] Assembling webapp[myapp] in [C:\code\workspace\myapp\myapp\target\myapp-current] 
[INFO] Processing war project 
[INFO] ------------------------------------------------------------------------ 
[ERROR] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] The specified web.xml file 'C:\code\workspace\myapp\myapp\webapp\WEB-INF\web.xml' does not exist 
[INFO] ------------------------------------------------------------------------ 

我認爲這是有趣的,是正在執行的命令是[war:war {execution: default-war}]而不是[grails:war]什麼的。這也可能是相關的。

回答

1

我的解決辦法:

更換

<packaging>war</packaging> 

<packaging>grails-app</packaging>