如何覆盖父pom.xml中定义的maven-war-plugin的参数?

时间:2011-11-02 19:27:44

标签: grails maven build web.xml

我正在尝试用maven构建一个grails项目。就其本身而言,这不会那么难。但是,我的项目中的pom.xml必须具有某个企业pom,因为它是它的父级。

父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文件位置的此规范,以便maven:

  1. 根本不寻找web.xml文件。
  2. 在其他位置查找web.xml文件。
  3. 实际上,在编译和运行测试之后,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 个答案:

答案 0 :(得分:1)

我的解决方案:

替换

<packaging>war</packaging>

<packaging>grails-app</packaging>