7

我的团队刚刚开始在 Java 项目中使用 Maven。我们现在拥有使用 Maven 从 Internet 获取依赖项的所有项目,但我们想使用 Maven 存储库来共享我们制作并打包在 jar 中的公共共享 Java 类。

我设置了一个 Maven Nexus 服务器,看起来它作为代理工作得很好。下一步是获取我们构建的其中一个 jar 并将其部署到本地 nexus 存储库中,因此任何开发人员都可以将其作为依赖项共享。但是我不知道从哪里开始。

如果我进行 mvn 安装,它会将代码放入本地(我的电脑)repo,这不是我想要的。我想将它安装在 nexus repo 上,这样我团队中的每个人都可以访问它。请帮帮我。

4

2 回答 2

3

您可能对此有所了解,但这里是关于设置 Maven 存储库的高级概述(供其他人使用)

一旦你有了一个存储库,你需要返回到每个依赖项目(或者如果它们共享一个主 pom)并定义存储库,以便将其添加到将为构建拉取的源存储库中。

我使用Apache 的 Archiva取得了很好的效果,它支持作为 Maven 项目请求的“缓存代理”,这样如果它不能为二进制工件本身提供服务,它将从上游存储库下载和收集二进制工件。也就是说,文档可能会更好一些。

还有其他产品,例如Artifactory,它们的评价很高。您可能希望将其视为评估的候选对象。

您的构建不需要存储库管理系统,任何具有正确目录结构的 ssh 服务器都可以;然而,拥有这样一个系统可以让您的生活更轻松,因为自动缓存与请求代理相结合,提供了一种管理用户访问的方法,构建和管理多个存储库(开发/QA 发布/通用可用性),以及运行可能使管理变得复杂的奇怪报告更容易(如果你使用它们)。

就实际使用这样的服务器而言,您需要修改 pom 的两个“部分”,以及一个(可能)需要添加的附加文件。

  1. 您必须重新配置项目的 <repositories> 部分才能从存储库中提取。
  2. 您必须重新配置项目的 <distributionManagement> 部分才能部署到新的存储库。
  3. 您必须修改或创建“settings.xml”文件来存储访问存储库的凭据。

除此之外,它成为风格问题。我建议通过设置两个存储库将快照与“发布”分开。这使您可以经常从快照存储库中清除旧文件,而不会对长期需要的发布版本造成风险。

然后,您需要决定是否要缓存内部构建所需的所有项目。如果是这样,您需要重新配置项目以不从“外部”存储库中提取,并将“丢失”的工件下载到存储库的正确目录中。许多存储库管理产品的“自动代理缓存”功能正是这样做的。

然后,您需要决定是否要在内部缓存maven系统的所有插件。如果是这样,你需要一个pluginRepository,如果你想部署一个自定义插件,一个pluginSnapshotRepository。是的,这听起来很多,但同时做四个这样的存储库只是做一个多一点的工作。

祝你好运!

于 2012-10-05T15:39:31.140 回答
0

您可以使用 DistributionManagement maven 插件执行工件的部署或安装。更多细节在这里。http://www.stefanolocati.it/blog/?p=1034

于 2012-10-05T15:22:25.187 回答