Maven 构建 war 一些 类 不包括在内

Maven build war some classes not included

在两台不同的机器上使用 mvn installmvn compile war:war 构建 maven webapp 时,结果 WAR 文件有 20MB 的差异,它们的构建时间相隔 1 分半钟(30 秒对2分钟)

通过使用 WinRAR 检查 war 文件,我注意到较小的 WAR 不包含 WEB-INF\classes\WEB-INF 和 WEB-INF\classes\resource 文件夹。

整个代码库是一样的。 POM.xml 包含 maven-compiler-plugin、webapp 和单元测试 运行 在两个应用程序上都很好,不同之处在于较小的 WAR 似乎没有包含语言本地化的属性文件。

很可能其中一台机器在本地 maven 存储库中存储了损坏的工件,或者指向带有损坏工件的镜像服务器。当工件无效 pom.xml 或 parent 的 pom.xml 无法解析时,您将收到警告:

The POM for is invalid, transitive dependencies (if any) will not be available

检查控制台输出并确认没有此类警告。参见 this answer for further reading

也可能是两台机器上使用的 Maven 版本不同。这可能会导致不同版本的 Maven War Plugin 运行,其中一个可能会受到错误的影响。确保两个构建使用相同的 Maven 版本和配置,例如Maven Wrapper.

您也有可能使用非标准构建,其中模块被手动绑定到阶段,例如Maven 程序集插件绑定到 test 阶段。确保两台机器使用完全相同的命令构建工件。

以上大体说明了为什么应该有一个 CI 服务器来获得可重现的构建。

两台机器的区别可能是maven设置位于~/.m2/settings.xml

考虑向您的项目添加一个 Maven 包装器 @看:https://www.baeldung.com/maven-wrapper