发生此错误的原因是,在版本 2.6 或更低版本中,maven-war 插件
默认期望 WAR 项目中存在一个文件,但它没有找到它。src/main/webapp/web.xml
使用批注并升级到 3.0.0 或更高版本
从插件的 3.0.0 版本开始,默认情况下不再强制存在 a:web.xml
的缺省值已从 更改为 。failOnMissingWebXml
true
false
这意味着升级插件直接解决了问题。您可以在 POM 中添加以下配置:
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.0.0</version>
</plugin>
原因是从Servlet 3.0开始,Web应用程序中不再需要该文件,并且可以用注释替换以具有基于Java的配置(MWAR-262)。但是,由于您的项目可能不使用注释来替换此文件(在这种情况下,实际上可能会丢失注释),因此在插件的 3.0.1 版中添加了健全性检查,以确保注释@WebServlet
位于 WAR 项目 (MWAR-396) 的编译类路径中。如果不是,并且项目中没有文件,则默认情况下插件仍将失败。web.xml
web.xml
web.xml
忽略缺失的web.xml
如果您只想让插件显式忽略丢失的文件,而不考虑注释的用法,则可以将 failOnMissingWebXml
参数设置为 。示例配置是:web.xml
false
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>