Maven中的“webxml属性是必需的”错误

我收到以下错误:

组装WAR时出错:需要webxml属性(或者如果在更新模式下执行,则预先存在的WEB-INF / web.xml)

我已经得到了web.xmlprojectname\src\main\webapp\WEB-INF\web.xml

什么可能导致这个?

如果你能提供你的maven-war-plugin的代码片段,这将是有帮助的。 看起来像web.xml是在正确的位置,你仍然可以尝试明确给位置

 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <configuration> <webXml>src\main\webapp\WEB-INF\web.xml</webXml> </configuration> </plugin> 
 <plugin> <artifactId>maven-war-plugin</artifactId> <version>2.4</version> <configuration> <failOnMissingWebXml>false</failOnMissingWebXml> </configuration> </plugin> 

这个解决scheme适用于我(我以前使用2.2)。 另外,我正在使用基于Java的Servlet 3.0configuration,并且不需要具有web.xml文件。

它也适合我。

 <project> ..... <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <configuration> <webXml>WebContent\WEB-INF\web.xml</webXml> </configuration> </plugin> </plugins> </build> </project> 

我的webXml标签的值需要像这样才能工作:

 <webXml>${project.basedir}\src\main\webapp\WEB-INF\web.xml</webXml> 

如果您正在从基于XML的configuration迁移到基于Java的configuration,并且已经通过实现WebApplicationInitializer删除了对web.xml的需求,那么只需删除对web.xml文件的需求即可。

 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.6</version> <configuration> <failOnMissingWebXml>false</failOnMissingWebXml> ... </configuration> 

它看起来好像在正确的位置有web.xml,但即便如此,这个错误通常是由目录结构不符合Maven期望看到的。 例如,如果您开始使用您正尝试使用Maven构build的Eclipse Web应用程序。

如果这是问题,一个快速的解决办法是创build一个
src/main/java和a
src/main/webapp目录(以及其他目录,如果你需要的话),然后移动你的文件。

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

我有完全相同的问题,我解决这个问题:

然后在src / main / webbapp下创build一个名为WEB-INF的新文件夹

右键单击您的项目 – > Java EE工具 – >生成部署描述符存根

这应该会生成你的web.xml

我希望这有助于解决你的问题:D

如果更改默认项目path,则必须指定web.xml文件的位置,例如:

  <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.5</version> <configuration> <webXml>src\main\web\WEB-INF\web.xml</webXml> </configuration> </plugin> 

mvn-war-plugin 2.3修复了这个问题:

 <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.3</version> </plugin> ... 

这是因为你没有在你的web项目中包含web.xml,并试图使用maven构build战争。 要解决此错误,您需要在pom.xml文件中将failOnMissingWebXml设置为false

例如:

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

请参阅博客了解更多详情: https : //ankurjain26.blogspot.in/2017/05/error-assembling-war-webxml-attribute.html

它也适用于我。

  <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <configuration> <webXml>WebContent\WEB-INF\web.xml</webXml> </configuration> </plugin> 

我在testing服务器上有同样的错误,但不是在本地。 几分钟后,我发现IDE没有与pom.xml同步。 这是我如何解决它:

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

  1. 右键单击您的项目文件夹
  2. 在上下文菜单中,select“Java EE工具”,然后select“生成部署描述符存根” 生成web.xml
  3. 它会创buildweb.xml。 项目结构中的web.xml

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

  1. 右键单击您的项目文件夹
  2. 在上下文菜单中,select“打开模块设置”,然后点击+添加Web部署描述符。 生成部署描述符
  3. 然后,您可以更改您的描述符Web Ressource目录和右侧的path
  4. 那么你会得到像这样的东西: 项目结构

发生这个错误是因为你说Maven打包文件打仗

 <packaging>war</packaging> 

你真的需要战争吗? 如果没有的话,把jar子放在那里 这是完整的代码:

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

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

看起来像pom.xml是不相对的。

根据文档,它说:如果web.xml文件丢失是否失败。 如果你想让你的WAR没有web.xml文件,那么设置为false。 如果您正在构build一个没有web.xml文件的覆盖图,这可能很有用。 默认值是:true。 用户属性是:failOnMissingWebXml。

 <plugin> <artifactId>maven-war-plugin</artifactId> <version>2.1.1</version> <extensions>false</extensions> <configuration> <failOnMissingWebXml>false</failOnMissingWebXml> </configuration> </plugin> 

希望它更清楚

您的文件夹结构是否已更改,因此该文件不再位于/src/main/webapp/WEB-INF/web.xml

为了解决这个问题,我给我的web文件夹名称webapp,并把它放在src / main中。 Maven似乎在/src/main/webapp/WEB-INF/web.xml中默认查找web.xml。 如果你这样做,那么你不需要明确告诉maven哪里是web.xml。 如果你已经改变了你的文件夹结构,并且你的版本最近停止了工作,这可能是为什么。

注意:这是一个旧的post,但发布的解决scheme没有指出为什么一个工作版本会突然停止工作。