我得到以下错误:
装配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
是什么导致了这种情况?
当前回答
这是一个老问题,有很多答案,其中大多数或多或少都会有所帮助;然而,有一个非常重要的和仍然相关的点,没有一个答案触及(相反,提供了不同的技巧,使构建成为可能),而且,我认为,无论如何,它的重要性都不低。恰恰相反。 根据您的日志消息,您正在使用Maven,这是一个项目管理工具,严格遵循约定,超过配置原则。
当Maven构建项目时:
它期望您的项目具有特定的目录结构,以便它知道在哪里期望什么。这被称为Maven的标准目录布局; 在构建过程中,它还创建了适当的目录结构,并将文件放置到相应的位置/目录中,这符合Java EE [web]应用程序的Sun Microsystems目录结构标准。
你可以合并很多东西,包括maven插件,改变/重新配置项目根目录等,但更好更容易的是遵循默认的约定而不是配置,根据它,(现在是你问题的答案)有一个简单的步骤可以让你的项目工作:只需将你的web.xml放在src\main\webapp\WEB-INF\下,并尝试用mvn包构建项目。
其他回答
我也遇到过同样的问题,我是这样解决的:
然后在src/main/webbapp下新建一个名为WEB-INF的文件夹
右键单击您的项目-> Java EE工具->生成部署描述符存根
这将生成web.xml
我希望这有助于解决你的问题:D
我的webXml标签的值需要看起来像这样才能工作:
<webXml>${project.basedir}\src\main\webapp\WEB-INF\web.xml</webXml>
关于包装,有两件事需要注意。
打包到war文件需要在Catalin Ciolocoiu所描述的适当文件夹中定义web.xml文件。 但是将包类型更改为jar不需要这种结构,并且应该立即工作。
如果您正在从基于xml的配置迁移到基于java的配置,并且您已经通过实现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>
你的文件夹结构改变了,所以文件不再在/src/main/webapp/WEB-INF/web.xml ?
为了解决这个问题,我给我的web文件夹命名为webapp,并把它放在src/main中。Maven默认在/src/main/webapp/WEB-INF/web.xml中查找web.xml。如果这样做,则不需要显式地告诉maven web.xml的位置。如果你改变了你的文件夹结构,你的构建最近停止工作,这可能是原因。
注意:这是一个旧的帖子,但是发布的解决方案并没有指出为什么一个正在工作的构建会突然停止工作。