我的团队刚刚开始使用Java项目中的Maven。我们现在已经使用Maven的所有项目来获取来自Internet的依赖项,但是我们想使用Maven存储库来共享我们制作的常见共享java类并在jar中打包。
我设置了一个Maven Nexus服务器,它看起来像是一个很好的代理服务器。下一步是采用我们构建的其中一个jar并将其部署到本地nexus repo中,因此任何开发人员都可以将其作为依赖项共享。但是我不知道从哪里开始。
如果我安装mvn,它会将代码放入本地(我的电脑)仓库,这不是我想要的。我想在nexus repo上安装它,所以我的团队中的每个人都可以访问它。请帮帮我。
答案 0 :(得分:3)
您可能对此有所了解,但here is a high-level overview (for others) about setting up a Maven repository。
一旦有了存储库,就需要返回每个依赖项目(或者如果它们共享一个主pom)并定义存储库,以便将其添加到将为构建提取的源存储库中
我已经使用Apache's Archiva获得了良好的结果,它支持成为Maven项目请求的“缓存代理”,这样如果它无法为二进制工件本身提供服务,它将从上游存储库下载和收集二进制工件。也就是说,文档可能会更好一些。
其他产品,例如Artifactory也很好。您可能希望将其视为评估候选人。
您的构建不需要存储库管理系统,因为任何具有正确目录结构的ssh服务器都可以;但是,拥有这样一个系统可以通过自动缓存与请求代理相结合,提供一种管理用户访问,构建和管理多个存储库(开发/ QA版本/通用可用性)以及运行可能使管理的奇怪报告的方法更容易(如果你使用它们)。
就实际使用这样的服务器而言,您需要修改pom的两个“部分”,以及需要添加的一个(可能)附加文件。
除此之外,它成为一种风格问题。我建议通过设置两个存储库将快照与“版本”分开。这使您可以经常从快照存储库中清除旧文件,而不会有长期存在的所需版本的风险。
然后,您需要决定是否要在内部缓存构建所需的所有项目。如果是这样,您需要重新配置项目以不从“外部”存储库中提取,并将“缺失”的工件下载到存储库的正确目录中。许多存储库管理产品的“自动代理缓存”功能就是这样做的。
然后您需要决定是否要在内部缓存 maven 系统的所有插件。如果是这样,您需要 pluginRepository ,如果您想要部署自定义插件,则需要 pluginSnapshotRepository 。是的,这听起来很多,但是在完成一个存储库的同时执行其中四个存储库只需要做更多的工作。
祝你好运!答案 1 :(得分:0)
您可以使用DistributionManagement maven插件执行工件的部署或安装。更多细节在这里。 http://www.stefanolocati.it/blog/?p=1034