您可能对此有所了解,但这里是关于设置 Maven 存储库的高级概述(供其他人使用)。
一旦你有了一个存储库,你需要返回到每个依赖项目(或者如果它们共享一个主 pom)并定义存储库,以便将其添加到将为构建拉取的源存储库中。
我使用Apache 的 Archiva取得了很好的效果,它支持作为 Maven 项目请求的“缓存代理”,这样如果它不能为二进制工件本身提供服务,它将从上游存储库下载和收集二进制工件。也就是说,文档可能会更好一些。
还有其他产品,例如Artifactory,它们的评价很高。您可能希望将其视为评估的候选对象。
您的构建不需要存储库管理系统,任何具有正确目录结构的 ssh 服务器都可以;然而,拥有这样一个系统可以让您的生活更轻松,因为自动缓存与请求代理相结合,提供了一种管理用户访问的方法,构建和管理多个存储库(开发/QA 发布/通用可用性),以及运行可能使管理变得复杂的奇怪报告更容易(如果你使用它们)。
就实际使用这样的服务器而言,您需要修改 pom 的两个“部分”,以及一个(可能)需要添加的附加文件。
- 您必须重新配置项目的 <repositories> 部分才能从存储库中提取。
- 您必须重新配置项目的 <distributionManagement> 部分才能部署到新的存储库。
- 您必须修改或创建“settings.xml”文件来存储访问存储库的凭据。
除此之外,它成为风格问题。我建议通过设置两个存储库将快照与“发布”分开。这使您可以经常从快照存储库中清除旧文件,而不会对长期需要的发布版本造成风险。
然后,您需要决定是否要缓存内部构建所需的所有项目。如果是这样,您需要重新配置项目以不从“外部”存储库中提取,并将“丢失”的工件下载到存储库的正确目录中。许多存储库管理产品的“自动代理缓存”功能正是这样做的。
然后,您需要决定是否要在内部缓存maven系统的所有插件。如果是这样,你需要一个pluginRepository,如果你想部署一个自定义插件,一个pluginSnapshotRepository。是的,这听起来很多,但同时做四个这样的存储库只是做一个多一点的工作。
祝你好运!