Servlet 3.0需要webxml属性

Rog*_*ger 49 vaadin maven-plugin maven vaadin7

尝试编译Vaadin WAR时出现此错误:

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]
Run Code Online (Sandbox Code Playgroud)

我知道这个错误意味着maven无法找到我的web.xml,但在"Book of Vaadin"中它表示在UI类中使用Servlet API 3.0和Annotation时不需要web.xml@WebServlet.

我正在一个单独的配置文件中编译我的widgetset(根据指南),当我输入此配置文件时,它编译得很好.但是,当我只编译web项目时,我得到上面提到的错误.

是什么赋予了?

我是否以某种方式覆盖了maven的行为?Vaadin甚至没有创建WEB-INF目录.我想我可以创建WEB-INF文件夹并在那里保留一个"ghost"web.xml以保持maven的快乐,但这似乎不对.

我错过了什么吗?

有谁知道这个很好的解决方案?

Ser*_*rov 108

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

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <configuration>
          <failOnMissingWebXml>false</failOnMissingWebXml>
        </configuration>
      </plugin>
    </plugins>
  </build>
Run Code Online (Sandbox Code Playgroud)

如果要使用web.xml而不是注释,只需创建WEB-INF/web.xml并在那里定义servlet,有关详细说明,请参阅Book of Vaadin.

  • 请注意,只需将`<failOnMissingWebXml> false </ failOnMissingWebXml>`添加到`<properties>`部分,就可以更简洁地完成此操作 (10认同)