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

Building .war file using maven. Missing files and directories

我尝试使用 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 目录的所有其他内容都丢失了(public、资源和视图)。此外,.war 文件中的 WEB-INF 目录仅包含 /类 和 /lib 目录(/WEB-INF/spring 和 WEB-INF/web.xml 是 missig)。

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

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

mvn clean package

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

您的 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.

中查找您的网络应用程序源