在两台不同的计算机上使用mvn install
或mvn compile war:war
来构建maven webapp时,WAR文件的差异为20MB,其构建时间相差1分半分钟(30秒vs 2分钟)
通过使用WinRAR检查战争文件,我注意到较小的WAR不包含WEB-INF \ classes \ WEB-INF和WEB-INF \ classes \ resource文件夹。
整个代码库是相同的。 POM.xml包含maven-compiler-plugin
,webapp和单元测试在两个app上都能很好地运行,区别在于较小的WAR似乎没有包含用于语言局部性的属性文件。
答案 0 :(得分:0)
最有可能的一台机器将损坏的工件存储在本地Maven存储库中,或指向带有损坏工件的镜像服务器。当工件具有无效的pom.xml
或无法解决父级的pom.xml
时,您会收到警告:
的POM无效,传递依赖项(如果有)将不可用
检查控制台输出,并确认没有此类警告。参见this answer for further reading。
也可能是两台机器上使用的Maven版本不同。这可能会导致Maven War Plugin在不同版本中运行,其中之一可能会受到错误的影响。确保两个版本都使用相同的Maven版本和配置,例如与Maven Wrapper。
您还有一种非标准的构建方式,其中模块被手动绑定到阶段,例如Maven程序集插件绑定到test
阶段。确保两台机器都使用完全相同的命令来构建工件。
上面通常说明了为什么应该拥有一台CI服务器来获得可复制的版本。
答案 1 :(得分:0)
两台机器之间的差异可能是〜/ .m2 / settings.xml
中的maven设置。考虑将Maven包装器添加到您的项目中 @see:https://www.baeldung.com/maven-wrapper