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

Omk*_*kar 15 java spring-mvc maven maven-assembly-plugin maven-war-plugin

我正在开发一个纯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的配置,因此我没有.

如何确保项目构建和创建war文件没有web.xml

Tun*_*aki 36

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

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

从版本3.0.0的插件开始,web.xml 默认情况下不再强制存在a :

默认值failOnMissingWebXml已从更改truefalse.

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

<plugin>
  <artifactId>maven-war-plugin</artifactId>
  <version>3.0.0</version>
</plugin>
Run Code Online (Sandbox Code Playgroud)

原因是,自Servlet 3.0起,web.xmlWeb应用程序中不再需要该文件,并且可以使用注释替换该文件以具有基于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>
Run Code Online (Sandbox Code Playgroud)