3

我一直在阅读 Gradle 及其存储库支持功能。文档表明它支持 Ivy 或 Maven 存储库。这对我的影响并不完全清楚。

在 Maven 回购的情况下,我认为我的理解更完整。构建时,Nexus 或 Artifactory 等本地存储库将缓存来自 MavenCentral 的所需公共依赖项。对于发布,Gradle 将为项目生成一个 POM.xml,您可以将私有工件发布回本地存储库。我的理解正确吗?我想控制正在使用的公共依赖项,以及纠正公共 MavenCentral POM 中的错误。

对于常春藤,我有点困惑。一方面,共享的常春藤回购是什么样的?它只是通过 SSH、SFTP、HTTP 等托管的远程目录树吗?这是否适用于混合 Windows/Unix 环境?Gradle 如何将公共依赖项和内置工件移动到共享的 Ivy 存储库中?詹金斯也可以执行这一步,如何?当定义了新的公共依赖项并且需要将它们移动到共享的 Ivy 存储库中时,是否需要额外的构建步骤,或者这是否无缝完成?

最后,假设两个模型的特征基本相同。与 Jenkins 构建机器一起维护的解决方案是什么?

4

1 回答 1

6

您对 Gradle 中的 Maven 支持的理解是正确的。您可以完全控制依赖项以及它们的来源(Gradle 没有任何硬编码的存储库,因此您可以使用Bintray而不是 Maven Central,例如,要纠正的错误更少)。

Ivy 的依赖管理是类似的。Ivy 有它自己的布局(在 Artifactory 中支持,但在 Nexus 中不支持, 请参阅“存储库支持”),并且网络中存在少量公共 Ivy 存储库(例如Ivy RoundUp)。由于 Ivy 擅长使用 Maven 存储库,因此大多数 Ivy 用户只使用 Maven Central 和/或 Bintray。

Ivy 和 Maven 的主要区别不在于存储库格式,而在于元数据格式。Ivy 使用 ivy.xml(尽管名称不是必须的)而不是 pom.xml,并且 xml 架构不同。Gradle 支持这两种格式,并且可以从 pom.xml 和 ivy.xml 读取传递依赖项,并且可以为您的项目生成元数据并将其部署到两种格式的存储库中。

于 2013-04-07T06:11:28.723 回答