maven - Gradle 如何与共享 Ivy 或 Maven 存储库集成?

标签 maven repository gradle ivy

我一直在阅读 Gradle 及其存储库支持功能。文档表明它支持 Ivy 或 Maven 存储库。我并不完全清楚这意味着什么。

对于 Maven 存储库,我认为我的理解更完整。构建时,本地存储库(例如 Nexus 或 Artifactory)将从 MavenCentral 缓存所需的公共(public)依赖项。对于发布,Gradle 将为项目生成 POM.xml,您可以将私有(private) Artifact 发布回本地存储库。 我的理解正确吗?我想控制正在使用的公共(public)依赖项,并纠正公共(public) MavenCentral POM 中的错误。

对于Ivy,我有点困惑。首先,共享的 Ivy 存储库是什么样的?它只是通过 SSH、SFTP、HTTP 等托管的远程目录树吗?这可以在 Windows/Unix 混合环境中工作吗? Gradle 如何将公共(public)依赖项和构建 Artifact 移动到共享的 Ivy 存储库中? Jenkins 也可以执行此步骤吗?如何执行?当定义新的公共(public)依赖项并且需要将它们移至共享的 Ivy 存储库时,是否需要额外的构建步骤,或者这是无缝完成的吗?

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

最佳答案

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

Ivy 的依赖管理是相似的。 Ivy 有它自己的布局( supported in Artifactory, but not in Nexus 参见“存储库支持”),并且网络上有少量公共(public) Ivy 存储库(例如 Ivy RoundUp )。由于 Ivy 擅长使用 Maven 存储库,因此大多数 Ivy 用户只使用 Maven Central 和/或 Bintray。

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

关于maven - Gradle 如何与共享 Ivy 或 Maven 存储库集成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15796545/

相关文章:

java - 如何在CVS中自动复制项目

javascript - 库和 namespace 的最佳做法

jenkins - Gradle插件无法在Jenkins上正确执行命令

android - 从 Assets 目录中排除文件以使用Gradle构建脚本进行发布构建

eclipse - Maven 错误 :"Updating Maven Project"

java - 如何使 Maven 单元测试代码覆盖工作

从 git 克隆存储库时 Android Studio 复制和粘贴问题

java - 如何在 maven 中设置 java.util.logging 日志级别(用于 Jenkins 插件 (JenkinsRule) 测试)

maven - 如何使用 Asciidoctor maven 插件排除空文件夹

android - Android Gradle Sync错误