我建议设置一台具有至少四个存储库的nexus服务器。我不推荐人工制品。nexus的免费版本非常适合少于三个团队,少于20个开发团队的情况。如果您拥有更多的用户,请帮自己一个忙,并为Sonatype版本付费。LDAP集成是值得的。
- 内部发行
- 内部快照
- 内部第三方 ,用于 内部 使用的来自外部来源的代码,或用于认可的第三方版本。将JDBC驱动程序,javax。*内容以及来自客户端和合作伙伴的内容放入此处。
- 外部代理的 通用代理,可用于所有常见的来源,例如m2,prehaus等
配置Nexus以对内部存储库执行以下操作
- 定期删除旧快照
- 发布时删除快照
- 构建索引文件。这也加快了本地构建
有一个公共的settings.xml文件,该文件仅使用这四个源。 如果您还需要自定义,请尝试保留设置文件的 公共部分 ,并使用
配置文件来区别它们。 不要让您的客户只是滚动自己的设置,否则最终您将获得在一台计算机上而不是其他任何计算机上构建的代码。
为您的客户提供通用代理。
在Nexus中,您可以向常见的Maven源(Apache,JBoss,Codehaus)添加一堆代理,并向内部客户端公开一个代理。这使得从客户中添加和删除资源变得更加容易。
不要 在同一存储库中 混合内部和第三方工件 。Nexus允许您通过Web
gui将jar添加到内部存储库。我建议将此作为将JDBC驱动程序和其他外部代码添加到3rd party的方式。与大多数 企业软件 相比,UI非常好用。
定义一个公共父POM ,该 父POM 通过 distributionManagement
标记定义内部快照和版本库。我知道很多人告诉你不要这样做。尽管我自由地承认这样做存在各种问题,但是如果客户端仅构建要发布到单个内部存储库的发行版和快照,那就可以了。
如果您现有的Maven存储库管理不当 ,请创建一个名为 Legacy 的第5个 存储库 ,并将整个 存储库
放在此处。设置cron任务,以从旧文件中删除旧文件一年。这给每个人一年以摆脱它并更新他们的诗句。
建立内部构件的易于遵循的命名约定。 我更喜欢 Department.Function.Project的 GroupID 和那个
componentName 的ArtifactId 。对于内部存储库,com / org /
net和公司名称可能无关紧要。如果公司更名,那就错了。销售,会计或库存部门重命名的可能性很小。



