Maven建立战争,不包括某些职业

时间:2018-12-05 14:06:51

标签: java maven compilation war

在两台不同的计算机上使用mvn installmvn 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似乎没有包含用于语言局部性的属性文件。

2 个答案:

答案 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