答案 0 :(得分:358)
这是一个maven错误。它表示它期望项目中的web.xml文件,因为它是一个Web应用程序,如<packaging>war</packaging>
所示。但是,对于最近的Web应用程序,web.xml文件是完全可选的。 Maven需要赶上这个惯例。
将此添加到您的maven pom.xml
,让maven赶上来,您不需要为项目添加无用的web.xml
:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
这是一个比添加空web.xml
更好的解决方案,因为这样您的最终产品保持干净,您只需更改构建参数。
对于更多当前版本的maven,您也可以使用较短版本:
<properties>
<failOnMissingWebXml>false</failOnMissingWebXml>
</properties>
答案 1 :(得分:148)
答案 2 :(得分:26)
如果您已经在/ src / main / webapp / WEB-INF下安装了web.xml但仍然出现错误“web.xml缺失且设置为true”,则可以检查是否包含 /项目源中的src / main / webapp 。
以下是您可以遵循的步骤:
(我用Eclipse Mars证实了这一点)
答案 3 :(得分:16)
我有同样的问题。在学习和谷歌搜索后,我解决了我的问题:
右键单击项目文件夹,转到Java EE Tools
,然后选择Generate Deployment Descriptor Stub
。这将在文件夹web.xml
中创建src/main/webapp/WEB-INF
。
答案 4 :(得分:15)
如果您使用Spring Tool Suite,则生成部署描述符存根的选项会在Java EE工具下移动,因此您:
答案 5 :(得分:15)
您也可以执行不那么详细的
<properties>
<failOnMissingWebXml>false</failOnMissingWebXml>
</properties>
答案 6 :(得分:7)
Eclipse识别出错误的默认webapp
目录。
因此,我们应该通过maven-war-plugin
清楚地设置它。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<webappDirectory>src/main/webapp</webappDirectory>
</configuration>
</plugin>
</plugins>
</build>
保存此设置后,如果删除它,错误将永远不会出现。 (我无法解释原因。)
答案 7 :(得分:3)
即使我的'src/main/webapp/WEB-INF/'
文件夹中包含正确的web.xml
,我也遇到了同样的问题。
我重新创建(maven-&gt; eclipse)配置后问题消失了
Maven build..
我执行了mvn eclipse:clean eclipse:eclipse
然后我使用Maven -> Update Project
添加(eclipse-&gt; maven)插件特定选项。
答案 8 :(得分:2)
我只在eclipse中遇到过这个问题,在Maven命令行中一切正常,我的web.xml文件已存在。这是一个受到影响的成熟项目(已在生产中部署)。我的问题与eclipse元数据有关。我的.settings /文件夹中的一个文件存在问题,特别是org.eclipse.wst.common.component已被更改。我能够将此文件恢复到其先前版本,这解决了我的问题。
请注意,Yuci的答案对我不起作用,当我尝试在eclipse属性中单击Deployment Assembly时,我收到一条错误消息,指出“当前显示的页面包含无效值。”
答案 9 :(得分:1)
这样做:
转到右键单击Deployment Descriptor,然后单击Generate Deployment Descriptor Stub。
答案 10 :(得分:1)
对于存在web.xml的项目 项目 - &gt;属性 - &gt;部署程序集,您可以在其中添加文件夹src / main / webapp。 保存更改。 清理项目以便开始。
对于没有web.xml的项目 在属性标记下的pom.xml中将failOnMissingWebXml设置为false。
答案 11 :(得分:0)
即使没有必要,创建一个只需要它的web.xml是没有意义的。如果你有嵌入式servlet conatiner或没有像spring-boot那样的xml cfg,那就是这种情况。 您只是在项目级别或全局
上的eclipse中禁用JavaEE(无用的东西)Eclipse/STS>Windows>Preferences>JavaEE>Doclet>Webdoclet> "uncheck" DeploymentDescriptor > OK
答案 12 :(得分:0)
选择您的项目 并选择“部署描述符”选项 然后选择“生成部署描述符存根”
答案 13 :(得分:0)
步骤:选择项目,然后选择“ Deployment Descriptor”选项,然后选择“ Generate Deployment Descriptor stub”,效果很好。问题是我们并不总是需要web.xml,因此最好将false附加到pom.xml
答案 14 :(得分:0)
右键单击project --> New --> Other --> Standard Deployment Descriptor(web.xml)
然后按 Next (下一步),它将创建一个WEB-INF
文件夹,其中包含web.xml
文件。
就这样了。
答案 15 :(得分:0)
我的项目与战争无关,但有相同的错误。我不得不从Eclipse中删除项目,从项目文件夹中删除所有Eclipse文件,然后重新导入Maven项目。
答案 16 :(得分:0)
您需要将此标签添加到pom.xml
<properties>
<failOnMissingWebXml>false</failOnMissingWebXml>
</properties>
答案 17 :(得分:-1)
在src / webapp中创建WEB-INF文件夹,并在WEB-INF文件夹中包含web.xml页面,然后
答案 18 :(得分:-1)
从 -web / .setting&amp; -admin / .setting
中删除文件
答案 19 :(得分:-1)
右键单击该项目,转到 Maven - &gt;更新项目... ,然后检查强制更新快照/版本,然后单击确定。它完成了!