构建WAR包时出现Maven错误(web.xml丢失..?)

jwa*_*zko 10 java maven-2

执行时mvn install,我遇到以下错误:

装配WAR时出错:需要webxml属性(如果在更新模式下执行,则为预先存在的WEB-INF/web.xml)

我的Web应用程序结构树是这样的:

my-app
|-- pom.xml
|-- src
    |-- ...
    |-- WebContent
        |-- ...
        |-- META-INF
        |-- WEB-INF
            |-- classes
                |-- ...
            |-- lib
            |-- **web.xml**
Run Code Online (Sandbox Code Playgroud)

我的POM文件看起来像这样:

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>masters.traffic</groupId>
  <artifactId>traffic_web</artifactId>
  <packaging>war</packaging>
  <name>traffic_web</name>
  <version>0.1.0</version>
  <build>
        <sourceDirectory>src</sourceDirectory>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>                    
                </configuration>
            </plugin>
        </plugins>
  </build>

    ...
</project>
Run Code Online (Sandbox Code Playgroud)

如何正确解决这个问题?

问候

Pas*_*ent 19

强烈建议使用Maven的标准布局:

  • 把Java源代码放入src/main/java(并删除sourceDirectory元素)
  • 把Web应用程序源放入 src/main/webapp
  • 删除classeslib下的目录WEB-INF

当然,你可以自定义布局,但这是IMO更多的麻烦和无用的努力而不是好处.只需按照惯例.


Lau*_*nen 13

我的猜测是maven-war-plugin寻找src/main/webapp/WEB-INF/web.xml,但找不到它,并希望你明确指定(非maven标准)位置.如果您不能重命名WebContentwebapp下移动它src/main/(推荐),你可以尝试添加这样的事情你<build>

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-war-plugin</artifactId>
  <configuration>
    <webXml>${basedir}/src/WebContent/WEB-INF/web.xml</webXml>
    <warSourceDirectory>${basedir}/src/WebContent</warSourceDirectory>
  </configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)