使用maven构建.war文件。缺少文件和目录

时间:2015-10-03 11:44:33

标签: java spring maven war maven-war-plugin

我尝试使用maven插件构建.war文件:

  <plugin>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.6</version>
    <configuration>
      <warSourceDirectory>WebContent</warSourceDirectory>
      <failOnMissingWebXml>false</failOnMissingWebXml>
    </configuration>
  </plugin>

我的项目结构如下:

/main/webapp/WEB-INF/
/main/webapp/WEB-INF/spring/...
/main/webapp/WEB-INF/web.xml
/main/webapp/public/...
/main/webapp/resources/...
/main/webapp/views/...

构建之后,我的war文件只包含WEB-INF和META-INF。缺少webapp目录的所有其他内容(公共,资源和视图)。此外,.war文件中的WEB-INF目录只包含/ classes和/ lib目录(/ WEB-INF / spring和WEB-INF / web.xml是missig)。

如何告诉maven将所有webapp和WEB-INF目录内容打包到war文件中?

3 个答案:

答案 0 :(得分:2)

maven-war-plugin的配置与项目结构不匹配。使用<warSourceDirectory>WebContent</warSourceDirectory>,您要配置maven-war-plugin以在WebContent目录中查找您的webapp源。但是,您的来源位于main/webapp

我建议您将所有的webapp源移到src/main/webapp(而不是main/webapp),并将maven-war-plugin配置更新为:

<plugin>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.6</version>
    <configuration>
         <failOnMissingWebXml>false</failOnMissingWebXml>
    </configuration>
</plugin>

默认情况下,maven-war-plugin会在src/main/webapp内查找您的网络应用来源。

答案 1 :(得分:0)

您可以使用命令行中的以下命令使用Maven打包项目。

mvn clean package

答案 2 :(得分:0)

查看Maven layout definition:webapp文件夹应位于scr/main/webapp而不是main/webapp。 或者,您也可以强制maven查看资源的不同目录。见https://maven.apache.org/pom.html#Build_Settings