首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Servlet 3.0需要webxml属性

Servlet 3.0需要webxml属性
EN

Stack Overflow用户
提问于 2013-08-12 20:07:57
回答 4查看 48.7K关注 0票数 50

当我试图编译一个Vaadin WAR时,我得到了这个错误:

代码语言:javascript
复制
Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.1.1:war (default-war) on project testvaadin-web: Error assembling WAR: webxml attribute is required (or pre-existing WEB-INF/web.xml if executing in update mode) -> [Help 1]

我知道这个错误意味着maven找不到我的web.xml,但在“Vaadin之书”中,它说当在UI类中使用Servlet API3.0和注释@WebServlet时,不需要web.xml。

我在一个单独的配置文件中编译我的小部件集(根据this指南),当我运行此配置文件时,它编译得很好。然而,当我只编译web-project时,我得到了上面提到的错误。

怎么回事?

我是否以某种方式重写了maven行为?Vaadin甚至没有创建WEB-INF目录。我想我可以创建WEB-INF文件夹,并在其中保留一个“幽灵”web.xml,以保持maven的快乐,但这似乎并不正确。

我是不是遗漏了什么?

有谁知道解决这个问题的好办法吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-08-12 20:24:41

默认情况下,如果找不到web.xml,maven-war-plugin将失败,请参阅here。如果您正在使用最新的原型创建Maven项目,则会将此参数设置为false:

代码语言:javascript
复制
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <configuration>
          <failOnMissingWebXml>false</failOnMissingWebXml>
        </configuration>
      </plugin>
    </plugins>
  </build>

如果您想使用web.xml而不是注释,只需创建WEB-INF/web.xml并在那里定义servlet,请参见Book of Vaadin以获取详细说明。

票数 109
EN

Stack Overflow用户

发布于 2015-06-04 01:04:17

我在这里遇到了类似的错误,但使用的是Eclise露娜(4.4)和Maven3.0

我最终这样做了:

WebContent\WEB-INF\web.xml移动到src\main\webapp\WEB-INF\web.xml

  • Use
  1. <webXml>以指定web.xml

的位置

org.apache.maven.plugins maven-compiler-plugin 3.0 src\main\webapp\WEB-INF\web.xml ${project.artifactId}

  1. 运行mvn package并查看构建成功(用于WAR)

在此之前,我尝试使用web.xml文件的原始路径

代码语言:javascript
复制
<webXml>WebContent\WEB-INF\web.xml</webXml>

但是maven没有选择它,最好遵循maven文件夹结构。

http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html

票数 3
EN

Stack Overflow用户

发布于 2016-10-23 00:09:54

从3.0.0版本开始,maven-war-plugin开箱即用,没有web.xml

至少是Maven3.3.9版本的打包war binds to a older version of the maven-war-plugin,因此您需要在pom.xml中显式设置版本

代码语言:javascript
复制
<project>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.0.0</version>
            </plugin>
        </plugins>
    </build>
</project>

早期版本的maven-war-plugin在缺省情况下将参数failOnMissingWebXml设置为true,这就是导致问题的原因。如果需要使用旧版本的插件,请参阅Sergey Makarovs answer了解如何将参数手动设置为false

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18186590

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档