Maven中的“webxml属性是必需的”错误
我收到以下错误:
组装WAR时出错:需要webxml属性(或者如果在更新模式下执行,则预先存在的WEB-INF / web.xml)
我已经得到了web.xml
在projectname\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重新生成部署描述符
- 右键单击您的项目文件夹
- 在上下文菜单中,select“Java EE工具”,然后select“生成部署描述符存根”
- 它会创buildweb.xml。
使用IntelliJ重新生成部署描述符
- 右键单击您的项目文件夹
- 在上下文菜单中,select“打开模块设置”,然后点击+添加Web部署描述符。
- 然后,您可以更改您的描述符或Web Ressource目录和右侧的path 。
- 那么你会得到像这样的东西:
发生这个错误是因为你说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没有指出为什么一个工作版本会突然停止工作。