首页 文章

组装WAR的Maven错误:使用纯Java Based Configuration构建SpringMVC项目并且没有xml时需要webxml属性

提问于
浏览
14

我正在开发一个纯Java基于配置的Spring MVC项目 . 当我进行Maven清理安装时,我收到以下错误 .

无法在项目上执行目标org.apache.maven.plugins:maven-war-plugin:2.2:war(default-war)SpringMVC-ShoppingCart:组装WAR时出错:需要webxml属性(或预先存在的WEB-INF / web.xml如果在更新模式下执行) - > [帮助1]

该错误表示缺少 web.xml ,但由于我使用的是基于纯Java的配置,因此我没有 .

如何在没有 web.xml 的情况下确保项目构建并创建war文件?

2 回答

  • 36

    发生此错误的原因是,版本2.6或更低版本中的maven-war-plugin默认情况下会在WAR项目中出现 src/main/webapp/web.xml 文件,但它找不到它 .

    使用注释并升级到3.0.0或更高版本

    从版本3.0.0的插件, web.xml is not mandatory by default anymore的存在:

    failOnMissingWebXml的默认值已从true更改为false .

    这意味着直接升级插件可以解决问题 . 您可以在POM中添加以下配置:

    <plugin>
      <artifactId>maven-war-plugin</artifactId>
      <version>3.0.0</version>
    </plugin>
    

    原因是,自Servlet 3.0起,Web应用程序中不再需要 web.xml 文件,并且can be replaced with annotations具有基于Java的配置(MWAR-262) . 但是,由于您的项目可能不使用注释来替换此文件,在这种情况下 web.xml 实际上可能会丢失,因此在插件的3.0.1版中添加了一个健全性检查,以确保注释@WebServlet位于编译类路径中你的WAR项目(MWAR-396) . 如果不是,并且项目中没有 web.xml 文件,则默认情况下插件仍然会失败 .

    忽略丢失的web.xml

    如果您只是希望插件显式忽略缺少的 web.xml 文件,则无论注释的用法如何,都可以将failOnMissingWebXml参数设置为 false . 示例配置将是:

    <plugin>
      <artifactId>maven-war-plugin</artifactId>
      <version>2.6</version>
      <configuration>
        <failOnMissingWebXml>false</failOnMissingWebXml>
      </configuration>
    </plugin>
    
  • 2

    这是因为您没有在web项目中包含web.xml并尝试使用maven构建war . 要解决此错误,您需要在pom.xml文件中将failOnMissingWebXml设置为false .

    例如:

    <properties>
        <failOnMissingWebXml>false</failOnMissingWebXml>   
    </properties>
    

    请访问博客了解更多详情:https://ankurjain26.blogspot.in/2017/05/error-assembling-war-webxml-attribute.html

相关问题