You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Maven War Plugin打包的WAR文件不包含项目类文件问题排查

问题:Maven WAR插件生成的WAR包中缺少类文件

我尝试使用maven-war-plugin生成WAR文件,在Windows系统中执行jar -xvf file.war命令解压后,发现WAR文件中不包含类文件。

我的pom.xml中插件配置如下:

<plugin>
    <artifactId>maven-war-plugin</artifactId>
    <version>3.3.1</version>
    <configuration>
         <warName>crud</warName>
    </configuration>
</plugin>

项目结构符合标准Maven Web项目布局,我依次执行了mvn clean install和mvn war:war命令,但生成的WAR包中没有类文件,请问原因是什么?


排查与解决方案

1. 检查源码目录是否符合Maven规范

标准Maven Web项目的Java源码必须放在src/main/java目录下。如果你的类文件存放在其他非标准路径(比如直接放在src目录下),maven-compiler-plugin不会自动编译这些代码,也就不会将类文件打包进WAR包。
确认项目中src/main/java目录存在,且所有Java类都放置在该目录下。

2. 验证编译阶段是否正常执行

执行mvn clean install时,Maven会按顺序执行clean→compile→test→package→install阶段。如果compile阶段未正常执行,就不会生成.class文件:

  • 单独执行mvn clean compile,然后查看target/classes目录是否有生成的类文件。如果该目录为空,说明编译环节出了问题:
    • 确认pom.xml中是否正确指定了打包类型:
      <packaging>war</packaging>
      
    • 执行mvn clean compile -X查看详细日志,排查是否存在编译错误(比如依赖缺失、语法错误等)。

3. 检查WAR插件配置是否存在排除规则

虽然你当前的插件配置仅指定了warName,但如果存在其他未展示的配置(比如packagingExcludes参数错误排除了类文件),也会导致类文件不被打包。可以检查插件配置中是否有额外的排除或资源配置。

4. 确认解压的是最新生成的WAR包

mvn war:war生成的WAR包默认位于项目根目录下的target文件夹中,确保你解压的是该目录下的最新文件,而非之前生成的旧缓存文件。


内容的提问来源于stack exchange,提问作者kmusial-MP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 13:18:17