2011-11-02 76 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>