cwa*_*ash 29 java maintenance maven-2 repository
我有兴趣为我的组织维护一个Maven 2存储库.有哪些指针和陷阱会有所帮助.
在发布代码时,在设置从库中下载或将自己的工件发布到存储库的标准时,用户应遵循哪些准则?您为此类事物制定了哪些治理/规则?您在开发人员指南/文档中包含了哪些内容?
更新:我们已经站起来并且非常满意它 - 遵循Sal的大部分指导方针并且没有遇到任何麻烦.此外,我们通过Hudson CI服务器限制了部署访问和快照构件的自动构建/部署.Hudson可以分析所有上游/下游项目依赖项,因此如果编译问题,测试失败或其他一些违规导致构建中断,则不会发生部署.厌倦了在Maven2/Maven3中进行快照部署,因为元数据在两个版本之间发生了变化."仅限Hudson"快照部署策略将缓解这种情况.我们不使用Release Plugin,但是在将快照移动到发布时,已经在Versions插件中编写了一些代码.我们也使用m2eclipse,它似乎与Nexus很好地配合,因为从设置文件中它可以看到Nexus并且知道从那里索引工件信息以进行查找.(虽然我不得不调整其中的一些设置以使其完全索引我们的内部快照.)如果您对此感兴趣,我还建议您使用您的工件部署源jar作为标准做法.我们在超级POM中配置它.
更新2:我遇到过这篇Sonatype白皮书,其中详细介绍了采用/成熟的不同阶段,每个阶段都有一个Maven资源库管理器的不同使用目标.
sal*_*sal 28
我建议设置一个至少有四个存储库的nexus服务器.我不推荐神器.免费版的nexus对于不到三组的开发团队来说非常好.如果你有更多的用户,请帮自己一个忙,并为Sonatype版本付费.LDAP集成为自己付出代价.
配置Nexus以执行以下内部存储库
有一个公共的settings.xml文件,它使用这四个,只有这四个来源.如果您需要在此之外进行自定义,请尝试保留设置文件的公共部分,并使用配置文件来区分差异.不要让您的客户只是滚动他们自己的设置,否则您最终会得到构建在一台机器上但不在任何其他机器上的代码.
为您的客户提供通用代理.在Nexus中,您可以向常见的Maven源(Apache,JBoss,Codehaus)添加一堆代理,并将一个代理暴露给内部客户端.这样可以更轻松地从客户端添加和删除源.
不要在同一存储库中混合使用内部和第三方工件.Nexus允许您通过web gui将jar添加到内部存储库.我建议将此JDBC驱动程序和其他外部代码添加到第三方.与大多数企业软件相比,UI非常好用.
定义一个公共父POM,它通过distributionManagement标记定义内部快照和释放repos .我知道很多人告诉你不要这样做.虽然我自由地承认这样做存在各种问题,但如果客户端只构建要部署到单个内部存储库的版本和快照,则可以正常工作.
如果您有一个错误管理的Maven存储库,请创建一个名为Legacy的第五个存储库,并将整个存储库放在那里.设置一个cron任务,一旦他们一岁,就从旧版中删除旧文件.这让每个人都有一年的时间离开它并更新他们的poms.
建立一个易于遵守内部工件的命名约定.我更喜欢Department.Function.Project的 GroupID 和该componentName的ArtifactId .对于内部存储库,com/org/net和公司名称可能无关紧要.如果公司更名,那就错了.销售,会计或库存部门重新命名的可能性要小得多.
| 归档时间: |
|
| 查看次数: |
7603 次 |
| 最近记录: |