我有兴趣维护 梅文 我的组织的 2 个存储库。有哪些指导和陷阱会有所帮助。

在发布代码时,在设置从存储库下载自己的工件或将其发布到存储库的标准时,用户应遵循哪些准则?对于此类事情,您有哪些类型的治理/规则?您在开发人员指南/文档中包含了哪些内容?

更新: :我们已经建立了 Nexus,并且对此非常满意 - 遵循了 Sal 的大部分指导原则,并且没有遇到任何问题。此外,我们还通过 Hudson CI 服务器限制了快照工件的部署访问和自动构建/部署。Hudson 可以分析所有上游/下游项目依赖关系,因此,如果编译问题、测试失败或某些其他违规导致构建中断,则不会发生部署。厌倦在 Maven2/Maven3 中进行快照部署,因为两个版本之间的元数据已发生变化。“仅限 Hudson”快照部署策略将缓解这种情况。我们不使用发布插件,但围绕该插件编写了一些管道 版本插件 当要将快照移动到发布时。我们还使用 m2eclipse,它似乎与 Nexus 配合得很好,因为从设置文件中它可以看到 Nexus,并知道索引工件信息以便从那里查找。(尽管我不得不调整其中一些设置以使其完全索引我们的内部快照。)如果您有兴趣这样做,我还建议您将您的工件部署一个源 jar 作为标准实践。我们在超级 POM 中对其进行配置。

更新2: :我遇到过 此 Sonatype 白皮书 其中详细介绍了采用/成熟度的不同阶段,每个阶段对于 Maven 存储库管理器都有不同的使用目标。

有帮助吗?

解决方案

我建议设置一台至少包含四个存储库的 Nexus 服务器。我不会推荐神器。Nexus 的免费版本非常适合少于 20 人、少于 3 个小组的开发团队。如果您的用户数量超过这个数量,请帮自己一个忙并支付 Sonatype 版本的费用。LDAP 集成本身就可以收回成本。

  1. 内部发布
  2. 内部快照
  3. 内部第三方 适用于内部使用的来自外部来源的代码,或认可的第三方版本。将 JDBC 驱动程序、javax.* 内容以及来自客户和合作伙伴的内容放在这里。
  4. 外部代理 所有常见来源(如 m2、codehaus 等)的通用代理

配置 Nexus 对内部存储库执行以下操作

  1. 定期删除旧快照
  2. 发布时删除快照
  3. 构建索引文件。这也加快了本地构建的速度

有一个通用的 settings.xml 文件,该文件使用这四个且仅使用这四个源。 如果您需要进行超出此范围的自定义,请尝试保留 公共部分 设置文件和使用 配置文件的差异。 不要让您的客户自行设置,否则您最终会得到在一台机器上构建而不是在任何其他机器上构建的代码。

为您的客户提供通用代理。 在 Nexus 中,您可以将一堆代理添加到常见的 Maven 源(Apache、JBoss、Codehaus),并将单个代理暴露给内部客户端。这使得添加和删除客户端的源变得更加容易。

不要混合内部和第 3 方工件 在同一个存储库中。Nexus 允许您通过 Web GUI 将 jar 添加到内部存储库。我推荐将此作为将 JDBC 驱动程序和其他外部代码添加到第 3 方的方法。与大多数用户界面相比,该用户界面非常好用 企业软件.

定义公共父POM 通过以下方式定义内部快照和发布存储库 分销管理 标签。我知道很多人告诉你不要这样做。虽然我坦率地承认这样做会遇到各种各样的问题,但如果客户端仅构建要部署到单个内部存储库的版本和快照,那么效果就很好。

如果您现有的 Maven 存储库管理不善, ,创建第 5 个存储库,名为 遗产 并将整个存储库放在那里。设置一个 cron 任务,以便在旧文件一年后将其从旧文件中删除。这给了每个人一年的时间来摆脱它并更新他们的 poms。

为内部工件建立一个易于遵守的命名约定。 我更喜欢的 GroupID 部门.职能.项目 和一个 ArtifactId 组件名称. 。对于内部存储库,com/org/net 和公司名称可能不相关。如果公司更名,那就错了。销售、会计或库存部门更名的可能性要小得多。

其他提示

绝对用 关系. 。:P

我用过 Nexus 和 Artifactory。Nexus 的界面更加健壮,更加可配置,当然,是由 索纳型, ,他几乎可以很好地代表 Maven 的一切。

话虽这么说,Artifactory 还不错且可行。

使用 Artifactory的

我自己正在使用 Artifactory,并且喜欢它的用户界面和易于部署/维护的特性。也就是说,我从未使用过 Nexus,无法真正帮助您进行适当的功能比较。

以下是我对 Artifactory 非常喜欢的一些事情(请记住 Nexus 也可能具有这些功能):

  1. 漂亮的 Web 2.0 界面。
  2. 能够导入本地 Maven 存储库以帮助您入门。
  3. 易于与现有 LDAP 服务器集成以确保安全(我非常喜欢用于存储凭据的单个存储库)。

鉴于实际上只有两个主要的 Maven 存储库实现,如果您确实想确保自己做出了正确的选择,我建议您都尝试一下,然后自己决定您更喜欢哪个。

也许这是显而易见的,但是,对于重现,开发商不应该覆盖的文物,应该是新版本。

这也适用于上游储存库。如果您下载Apache的公共版本1.2.3,你应该不会再下载。修正来自后者的版本,而不是施加到现有版本。

另外需要考虑的:

http://archiva.apache.org/

由于在原题(适用的技术问题,构建M2存储库时考虑),我会建议创建只读用户用于浏览存储库和每个管理员管理用户(即说:一个读对于所有那些非管理员用户) - 只用户。 此外,我会建议生成备份映像定期(每天一次吧?)。很重要的两个,如果你的仓库大,或者您从时间安装自己的文物时间。

最后,但并非最不重要,增加新的远程仓库时,你必须添加包含/排除过滤器,以便在仓库中的神器查询会更快速地完成。

有很多其他的问题需要考虑,但这些都是我在管理一个Maven仓库内遇到的问题的领导

有关的记录,我使用的两个Nexus和Artifactory的;我可以明确指出,虽然Nexus是非常简单和操作(虽然有时我在Ubuntu的安装过程中的问题),它的免费版本无法与Artifactory的社区(免费)版的竞争。 剔除Artifactory的的真棒网2 UI,它的主要功能,如安全管理,定期备份和访问性问题,是远远超越这些的Nexus的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top