繁体   English   中英

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

[英]Maven build war some classes not included

当使用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和单元测试在两个应用程序上都能很好地运行,不同之处在于较小的WAR似乎没有包含针对语言局部性的属性文件。

最有可能的一台机器将损坏的工件存储在本地Maven存储库中,或指向带有损坏工件的镜像服务器。 当工件具有无效的pom.xml或无法解析父级的pom.xml您将收到警告:

的POM无效,传递依赖项(如果有)将不可用

检查控制台输出,并确认没有此类警告。 请参阅此答案以进一步阅读

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

还有一种可能是您使用非标准版本,将模块手动绑定到阶段,例如,将Maven Assembly Plugin绑定到test阶段。 确保两台机器使用完全相同的命令来构建工件。

上面一般性地说明了为什么应该有一台CI服务器来获得可复制的构建。

两台机器之间的差异可能是〜/ .m2 / settings.xml中的Maven设置

考虑将maven包装器添加到您的项目中@see: https : //www.baeldung.com/maven-wrapper

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM