我得到以下错误:
装配WAR: webxml属性是必需的(如果以更新模式执行,则需要预先存在的WEB-INF/web.xml)
我有web.xml在正确的地方,这是projectname\src\main\webapp\WEB-INF\web.xml
是什么导致了这种情况?
我得到以下错误:
装配WAR: webxml属性是必需的(如果以更新模式执行,则需要预先存在的WEB-INF/web.xml)
我有web.xml在正确的地方,这是projectname\src\main\webapp\WEB-INF\web.xml
是什么导致了这种情况?
当前回答
这是因为您没有在web项目中包含web.xml,并试图使用maven构建war。要解决这个错误,您需要在pom.xml文件中将failOnMissingWebXml设置为false。
例如:
<properties>
<failOnMissingWebXml>false</failOnMissingWebXml>
</properties>
详情请见博客:https://ankurjain26.blogspot.in/2017/05/error-assembling-war-webxml-attribute.html
其他回答
如果你改变默认的项目路径,你必须指定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>
我的webXml标签的值需要看起来像这样才能工作:
<webXml>${project.basedir}\src\main\webapp\WEB-INF\web.xml</webXml>
这是一个老问题,有很多答案,其中大多数或多或少都会有所帮助;然而,有一个非常重要的和仍然相关的点,没有一个答案触及(相反,提供了不同的技巧,使构建成为可能),而且,我认为,无论如何,它的重要性都不低。恰恰相反。 根据您的日志消息,您正在使用Maven,这是一个项目管理工具,严格遵循约定,超过配置原则。
当Maven构建项目时:
它期望您的项目具有特定的目录结构,以便它知道在哪里期望什么。这被称为Maven的标准目录布局; 在构建过程中,它还创建了适当的目录结构,并将文件放置到相应的位置/目录中,这符合Java EE [web]应用程序的Sun Microsystems目录结构标准。
你可以合并很多东西,包括maven插件,改变/重新配置项目根目录等,但更好更容易的是遵循默认的约定而不是配置,根据它,(现在是你问题的答案)有一个简单的步骤可以让你的项目工作:只需将你的web.xml放在src\main\webapp\WEB-INF\下,并尝试用mvn包构建项目。
根据文档,它说:如果web.xml文件丢失,是否构建失败。如果你想在没有web.xml文件的情况下构建WAR,则设置为false。如果您正在构建一个没有web.xml文件的覆盖,这可能是有用的。 缺省值:true。 用户属性为:failOnMissingWebXml。
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<extensions>false</extensions>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</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>
...