缺少web.xml,<failonmissingwebxml>设置为true

时间:2015-08-05 14:13:43

标签: eclipse maven java-ee m2eclipse

考虑:

Enter image description here

当我在Maven中创建简单的Eclipse项目时,我收到此错误:

  

缺少web.xml,<failOnMissingWebXml>设置为   真

如何解决此问题?

20 个答案:

答案 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)

你也可以这样做:

  1. 右键单击项目浏览器中的部署描述符
  2. 选择生成部署描述符存根
  3. 它将在 src / main / webapp 中生成 WEB-INF 文件夹,并在其中生成 web.xml

    enter image description here

答案 2 :(得分:26)

如果您已经在/ src / main / webapp / WEB-INF下安装了web.xml但仍然出现错误“web.xml缺失且设置为true”,则可以检查是否包含 /项目源中的src / main / webapp

以下是您可以遵循的步骤:

  1. 您可以通过右键单击项目来检查这一点,然后打开其属性对话框,然后打开“部署程序集”,您可以在其中添加Folder / src / main / webapp。保存设置,然后
  2. 转到Eclipse菜单项目 - &gt;清理......并清理项目,错误应该消失。
  3. (我用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工具下移动,因此您:

  1. 点击项目
  2. 上的
  3. 选择 Java EE工具
  4. 选择生成部署描述符存根选项
  5. 这将在src / main / webapp / WEB-INF /文件夹中创建web.xml文件,当然也可以从Maven的pom.xml文件中删除错误。

    enter image description here

答案 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)

1

然后按 Next (下一步),它将创建一个WEB-INF文件夹,其中包含web.xml文件。

2

就这样了。

答案 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

中删除文件

1

答案 19 :(得分:-1)

右键单击该项目,转到 Maven - &gt;更新项目... ,然后检查强制更新快照/版本,然后单击确定。它完成了!