maven - 软件构建和部署的最佳实践
问题描述
你们在项目中使用的最佳实践是什么。
目前我正在使用 Ant 脚本为项目构建做一些杂务,然后是 Maven。目前我们没有任何直接的 CI/CD 管道,但我想知道行业是如何发展和塑造的。我尝试了 Gradle,发现它很酷。
因此,如果某家公司要从头开始发展,请详细说明你们认为的最佳实践!
解决方案
首先,IMO 这个问题并不真正适合 SO 格式,在这种格式中,人们会询问有关具体技术的具体问题。这个问题太笼统了。
关于您在问题中提到的构建工具:
我想说,使用 Maven 和 Gradle,您可以实现下降现代管道,另一方面,您可以开发糟糕的 gradle 和 maven(在某种程度上)脚本,这将成为维护的噩梦。Ant 在这些日期相当过时,所以我不会为新项目选择它。
Ant/Maven/Gradle 只是构建工具,正确的 CI/CD 远不止这些。
根据您的应用程序类型,您可能想了解:
- 混帐
- 关系/人工制品
- Jenkins 或其他 CI 工具
- 测试——这是一个非常广泛的话题
- 码头工人
- kubernetes & 在 kubernetes 上正确部署
- 正确的日志记录
- 适当的计量
- 等等等等
如果您计划在云上运行,那么您显然必须了解您的云提供的内容。
我想强调的最后一个想法是,没有“一个合适的管道”这样的东西——每家公司都会构建最适合他们的 CI/CD 管道。
当然,有些管道是相似的,但它们并不一定要完全相同,这没关系,因为:
- 有些公司很小有些公司很大
- 有些一天发布多次,有些选择 1/2 年发布
- 有些仅适用于 Java(我知道您主要是指问题中的 java 生态系统)-其他也使用其他必须以某种方式协同工作的语言
- 有些人使用自己的服务器,有些人将应用程序托管在云上(同样,一个去 AWS,另一个去 Google Cloud 或 Microsoft Azure,或者可能是其他云提供商)
- 等等等等