Maven错误组装WAR:使用纯Java基于配置且没有xml的SpringMVC项目构建时,需要webxml属性
问题内容:
我正在开发一个基于纯Java配置的Spring MVC项目。我执行Maven全新安装时出现以下错误。
无法在项目SpringMVC-ShoppingCart上执行目标org.apache.maven.plugins:maven-war-
plugin:2.2:war(default-war):组装WAR时出错:需要webxml属性(或预先存在的WEB-INF / web
.xml(如果以更新模式执行)-> [帮助1]
该错误表明web.xml
缺少该错误,但是由于我使用了基于纯Java的配置,所以我没有一个错误。
如何确保项目不生成并创建war文件web.xml
?
问题答案:
发生此错误的原因是maven-war-plugin
,在2.6或更低版本中的,默认情况下期望src/main/webapp/web.xml
WAR项目中存在一个文件,但找不到该文件。
使用注释并升级到3.0.0或更高版本
从插件3.0.0版本开始,web.xml
默认情况下不再强制存在a :
的默认值
failOnMissingWebXml
已从更改true
为false
。
这意味着升级插件可以直接解决问题。您可以在POM中添加以下配置:
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.0.0</version>
</plugin>
原因是从Servlet
3.0开始,web.xml
Web应用程序中不再需要该文件,并且可以将其替换为具有基于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>