web.xml 缺失且 <failOnMissingWebXml> 设置为 true

web.xml is missing and <failOnMissingWebXml> is set to true

考虑:

当我创建一个简单的 Maven project in Eclipse 时,我收到了这个错误:

web.xml is missing and <failOnMissingWebXml> is set to true

我该如何解决这个问题?

我也遇到了同样的问题。经过学习和谷歌搜索,我已经解决了我的问题:

右键单击项目文件夹,转到 Java EE Tools、select Generate Deployment Descriptor Stub。这将在文件夹 src/main/webapp/WEB-INF.

中创建 web.xml

你也可以这样做:

  1. Project Explorer 中右键单击 部署描述符
  2. Select 生成部署描述符存根

它将在src/main/webappweb.xml中生成WEB-INF文件夹在里面。

这是一个 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>

如果你在/src/main/webapp/WEB-INF下已经有web.xml但你仍然得到错误"web.xml is missing and is set to true",你可以检查你是否包含了/src/main/webapp 在您的项目源中。

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

  1. 您可以通过右键单击您的项目并打开其属性对话框来检查这一点,然后 "Deployment Assembly",您可以在其中添加文件夹 /src/main/webapp。保存设置,然后,
  2. 转到 Eclipse 菜单 Project -> Clean... 并清理项目,错误应该会消失。

(我用 Eclipse Mars 验证了这一点)

创建一个 web.xml 只是 elcipse 想要它是没有意义的,即使没有必要。如果您嵌入了 servlet conatiner 或没有像 spring-boot 那样的 xml cfg,就会出现这种情况。 您只是在项目级别或全局

的 eclipse 中禁用 JavaEE(无用的东西)
Eclipse/STS>Windows>Preferences>JavaEE>Doclet>Webdoclet> "uncheck" DeploymentDescriptor > OK

这样做:

转到并右键单击“部署描述符”,然后单击“生成部署描述符存根”。

你也可以这样做,这样比较不冗长

<properties>
    <failOnMissingWebXml>false</failOnMissingWebXml>
</properties>

我遇到了同样的问题,尽管我的 'src/main/webapp/WEB-INF/' 文件夹具有正确的 web.xml

在我重新创建(maven->eclipse)配置后问题消失了 Maven build.. 我执行了 mvn eclipse:clean eclipse:eclipse

然后我使用 Maven -> Update Project 添加 (eclipse->maven) 插件特定选项。

我只在 eclipse 中遇到过这个问题,在 Maven 命令行中一切正常,并且我的 web.xml 文件存在。这是一个成熟的项目(已经部署到生产中)受到了影响。我的问题与日食元数据有关。我的 .settings/ 文件夹中的其中一个文件有问题,特别是 org.eclipse.wst.common.component 已更改。我能够将此文件恢复到其之前的版本,这解决了我的问题。

请注意,Yuci 的回答对我不起作用,当我尝试单击 eclipse 属性中的 Deployment Assembly 时,出现了一个错误 "the currently displayed page contains invalid values."

如果您使用 Spring 工具套件,生成部署描述符存根的选项将移至 Java EE 工具下,因此您:

  1. 右键单击您的项目
  2. Select Java EE 工具
  3. Select 生成部署描述符存根选项

这将在 src/main/webapp/WEB-INF/ 文件夹中创建 web.xml 文件,当然还会从 Maven 的 pom.xml 文件中删除错误。

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>

保存此设置后,删除后不会再出现该错误。 (我无法解释为什么。)

在 src/webapp 中创建 WEB-INF 文件夹,并在 WEB-INF 文件夹中包含 web.xml 页面,然后

-web/.setting&-admin/.setting

中删除文件

对于 web.xml 存在的项目 Project-->Properties-->Deployment Assembly,这里可以添加Folder src/main/webapp。 保存更改。 清理项目以开始。

对于 web.xml 不存在的项目 在属性标签下的 pom.xml 中将 failOnMissingWebXml 设置为 false。

Select 你的项目 和 select "Deployment Descriptor" 选项 然后选择 "Generate Deployment Descriptor stub"

右击项目,进入Maven -> Update Project...,勾选Force Update of Snapshots/Releases,然后点击确定。完成了!

步骤:Select 您的项目和 select "Deployment Descriptor" 选项,然后选择 "Generate Deployment Descriptor stub" 工作正常。问题是我们并不总是需要 web.xml,所以最好将 false 附加到 pom.xml

右击project --> New --> Other --> Standard Deployment Descriptor(web.xml)

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

大功告成。

我的项目与war无关,但同样的错误。我不得不从 eclipse 中删除项目,从项目文件夹中删除所有 eclipse 文件并重新导入 maven 项目。

您需要将此标签添加到您的 pom.xml

 <properties>
    <failOnMissingWebXml>false</failOnMissingWebXml>
</properties>

请在POM.XML结束标签前添加以下XML代码[= =11=]

            <properties>
                <failOnMissingWebXml>false</failOnMissingWebXml>
            </properties>

这应该可以解决丢失 WEB.XML 文件的错误。