我一直在阅读Gradle及其存储库支持功能。文档表明它支持Ivy或Maven repos。这对我的影响并不完全清楚。
在Maven回购的情况下,我认为我的理解更完整。构建时,像Nexus或Artifactory这样的本地存储库将缓存MavenCentral所需的公共依赖项。对于发布,Gradle将为项目生成POM.xml,您可以将私有工件发布回本地存储库。 我的理解是否正确?我想控制正在使用的公共依赖项,同时纠正公共MavenCentral POM中的错误。
对于常春藤,我有点困惑。首先,共享常春藤仓库是什么样的?它只是通过SSH,SFTP,HTTP等托管的远程目录树吗?这是否适用于混合的Windows / Unix环境? Gradle如何将公共依赖项和构建的工件移动到共享的Ivy仓库中? Jenkins也可以执行此步骤,怎么做?在定义新的公共依赖项并且需要将它们移动到共享的Ivy仓库时,是否需要额外的构建步骤,或者这是否可以无缝完成?
最后,假设两个模型的特征基本相同。与Jenkins构建机器一起维护的解决方案是什么?
答案 0 :(得分:6)
您对Gradle中Maven支持的理解是正确的。您可以完全控制依赖项及其来源(Gradle没有任何硬编码的存储库,因此您可以使用Bintray代替Maven Central,例如,更少错误来纠正)。
Ivy的依赖管理是相似的。 Ivy有自己的布局(supported in Artifactory, but not in Nexus 参见'存储库支持'),网络上有少量公共常春藤存储库(例如Ivy RoundUp)。由于Ivy对Maven存储库很好,大多数常春藤用户只使用Maven Central和/或Bintray。
Ivy和Maven之间的主要区别不在于存储库格式,而是在元数据格式中。 Ivy使用ivy.xml(虽然名称不是必须的)而不是pom.xml,而xml架构是不同的。 Gradle支持这两种格式,可以从pom.xml和ivy.xml读取传递依赖关系,并可以为您的项目生成元数据,并以两种格式将其部署到存储库。