我正在使用纯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文件?
答案 0 :(得分:36)
发生此错误是因为版本2.6或更低版本中的maven-war-plugin
默认情况下会在WAR项目中出现src/main/webapp/web.xml
文件,但它找不到它。
自插件版本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