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

时间:2015-10-28 11:59:00

标签: java maven spring-mvc maven-assembly-plugin maven-war-plugin

我正在使用纯Java配置开发Spring MVC项目。当我进行Maven干净安装时,我收到以下错误。

  

无法执行目标   org.apache.maven.plugins:maven-war-plugin:2.2:war(default-war)on   project SpringMVC-ShoppingCart:汇编WAR:webxml属性时出错   是必需的(如果在更新中执行,则预先存在的WEB-INF / web.xml)   模式) - > [帮助1]

错误说web.xml缺失,但我没有使用纯自基于Java的配置。

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

2 个答案:

答案 0 :(得分: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版中添加了一个完整性检查以确保注释{{3在WAR项目的编译类路径中(@WebServlet)。如果不是,并且项目中没有web.xml文件,默认情况下插件仍会失败。

忽略丢失的web.xml

如果您只是希望插件显式忽略丢失的web.xml文件,无论注释的使用情况如何,您都可以将MWAR-396参数设置为false。示例配置为:

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

答案 1 :(得分:2)

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

例如:

user.username = malloc (50);
user.password = malloc (50);

请参阅博客了解详情:https://ankurjain26.blogspot.in/2017/05/error-assembling-war-webxml-attribute.html