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

Yog*_*oke 140 eclipse m2eclipse java-ee maven

考虑:

在此输入图像描述

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

缺少web.xml并将<failOnMissingWebXml>其设置为true

我该如何解决这个问题?

Mar*_*ger 377

这是一个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>
Run Code Online (Sandbox Code Playgroud)

这是一个比添加空更好的解决方案,web.xml因为这样您的最终产品保持干净,您只需更改构建参数.

对于更新的maven版本,您也可以使用更短的版本:

<properties>
    <failOnMissingWebXml>false</failOnMissingWebXml>
</properties>
Run Code Online (Sandbox Code Playgroud)

  • 这个答案必须标记为正确 (31认同)
  • 这个答案比其他答案更合理. (25认同)
  • 请按照[http://stackoverflow.com/a/35519476/859604]的建议,考虑更新您的答案以获得更短的配置.包括`<properties> <failOnMissingWebXml> false </ failOnMissingWebXml> </ properties>`足以代替更详细的插件配置设置. (11认同)
  • 如果您在Servlet 3.0+环境中使用并且具有"Interface WebApplicationInitializer"的任何实现,那么这个答案是正确的方法.这是解决这个问题的明智方法 - 在没有它的情况下采取措施后添加"web.xml"就没有意义了! (6认同)
  • 这比创建一个空的web.xml更好 (3认同)

Woj*_*chu 166

你也可以这样做:

  1. 右键单击部署描述符 中的 工程资源管理器.
  2. 选择Generate Deployment Descriptor Stub.

它将在src/main/webapp中生成WEB-INF文件夹,并在其中生成web.xml.

在此输入图像描述

  • 我不建议在代码中添加样板,因为你的构建工具会出错. (34认同)
  • 请参阅下面的答案以获取替代方案.上面的解决方案没有错,只是你应该尽力使你的最终产品尽可能干净.使用上面的解决方案,您的最终产品将最终得到一个不必要的`web.xml`文件.您应该在构建工具(即maven)中修复此问题. (6认同)

Yuc*_*uci 29

如果你已经拥有的web.xml下/ src目录/主/ web应用/ WEB-INF,但你仍然得到错误"的web.xml是失踪,被设置为true",你可以检查是否已包括/ src目录/主/ web应用程序中你的项目来源.

您可以按照以下步骤操作:

  1. 您可以通过右键单击项目来检查此项,然后打开其"属性"对话框,然后单击"部署程序集",您可以在其中添加Folder/src/main/webapp.保存设置,然后,
  2. 转到Eclipse菜单Project - > Clean ...并清理项目,错误应该消失.

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


mil*_*vic 17

如果您使用Spring Tool Suite,则生成部署描述符存根的选项将在Java EE工具下移动,因此您:

  1. 右键单击您的项目
  2. 选择Java EE Tools
  3. 选择Generate Deployment Descriptor Stub选项

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

在此输入图像描述


Tun*_*ung 16

我也有同样的问题.经过学习和谷歌搜索,我解决了我的问题:

右键单击项目文件夹,转到Java EE Tools,选择Generate Deployment Descriptor Stub.这将web.xml在文件夹中创建src/main/webapp/WEB-INF.

  • 我不建议在代码中添加样板,因为你的构建工具会出错. (3认同)

小智 16

你也可以这样做,不那么冗长

<properties>
    <failOnMissingWebXml>false</failOnMissingWebXml>
</properties>
Run Code Online (Sandbox Code Playgroud)


yuk*_*ane 8

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>
Run Code Online (Sandbox Code Playgroud)

保存此设置后,如果删除它,错误将永远不会出现.(我无法解释原因.)