![](/img/trans.png)
[英]Is it possible to include only the used classes in a war file with maven build?
[英]Maven build war some classes not included
当使用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和单元测试在两个应用程序上都能很好地运行,不同之处在于较小的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.