我得到以下错误:

装配WAR: webxml属性是必需的(如果以更新模式执行,则需要预先存在的WEB-INF/web.xml)

我有web.xml在正确的地方,这是projectname\src\main\webapp\WEB-INF\web.xml

是什么导致了这种情况?


当前回答

你的文件夹结构改变了,所以文件不再在/src/main/webapp/WEB-INF/web.xml ?

为了解决这个问题,我给我的web文件夹命名为webapp,并把它放在src/main中。Maven默认在/src/main/webapp/WEB-INF/web.xml中查找web.xml。如果这样做,则不需要显式地告诉maven web.xml的位置。如果你改变了你的文件夹结构,你的构建最近停止工作,这可能是原因。

注意:这是一个旧的帖子,但是发布的解决方案并没有指出为什么一个正在工作的构建会突然停止工作。

其他回答

我在测试服务器上有同样的错误,但不是在本地。几分钟后,我发现IDE没有与pom.xml同步。以下是我的解决方法:

使用Eclipse重新生成部署描述符

右键单击项目文件夹 在上下文菜单中,选择“Java EE工具”,然后选择“生成部署描述符存根” 它将创建web.xml文件。

使用IntelliJ重新生成部署描述符

右键单击项目文件夹 在上下文菜单中,选择“打开模块设置”,然后单击+添加web部署描述符。 然后你可以改变你的描述符或Web资源目录的路径。 然后你会得到这样的东西:

发生此错误是因为您告诉Maven将文件打包到war。

<packaging>war</packaging>

你真的需要战争吗?如果没有,把罐子放在那里。 以下是完整的代码:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>
    <version>1.0-SNAPSHOT</version>

    <groupId>com.your.groupid</groupId>
    <artifactId>artifactid</artifactId>
    <packaging>jar</packaging>

确保在Project文件夹中正确放置了pom.xml。而不是在目标文件夹或其他任何地方。

看起来pom.xml没有相对对齐。

看起来web.xml在正确的位置,但即使如此,这个错误通常是由目录结构与Maven期望看到的不匹配引起的。例如,如果您从一个试图用Maven构建的Eclipse web应用程序开始。

如果这是问题所在,一个快速的解决方法是创建一个 Src /main/java和a Src /main/webapp目录(和其他目录,如果你需要他们),只是移动你的文件。

下面是maven目录布局的概述: http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html

关于包装,有两件事需要注意。

打包到war文件需要在Catalin Ciolocoiu所描述的适当文件夹中定义web.xml文件。 但是将包类型更改为jar不需要这种结构,并且应该立即工作。