如何依赖Gradle中Artifactory的版本和快照?

时间:2016-01-19 12:06:44

标签: gradle artifactory

我觉得我错过了Artifactory'虚拟回购'概念。我之前使用过Nexus和Maven,对Artifactory和Gradle都很陌生,而且我不记得曾经遇到过这类问题。

我觉得我有一个相当正常的场景,我需要主要是发布依赖项,在开发期间有一些快照依赖项。

版本依赖关系可以从虚拟仓库和libs-release' (包括' libs-release-local',以及其他repos),快照可以在' libs-snapshot'。

中找到。

我感到困惑的是我应该如何使用Artifactory插件在Gradle中定义它?从文档和示例中,我认为我需要类似的东西:

artifactory {
  contextUrl = 'http://my-artifactory/artifactory'

  resolve {
    repository {
      repoKey = 'all-my-libs'
    }
  }
}

但这感觉不对 - 如果我把它们全部混在一起使用它们,那么单独回购中的要点是什么?对this question的回答中的评论支持了我的担忧。该问题涉及/repo虚拟存储库,由于某些原因我无法使用。如果我尝试使用它,我会得到403 Forbidden

如果没有Artifactory,我会定义多个存储库,如:

repositories {
  // other repos...
  maven { url 'http://my-artifactory/releases' }
  maven { url 'http://my-artifactory/snapshots' }
}

但是当我包含Artifactory插件时,似乎repositories闭包被忽略或以某种方式被屠杀 - 与上面的示例类似,并且没有resolve闭包,Gradle似乎仅尝试从http://my-artifactory/snapshots repo获取依赖项,并在尝试查找版本依赖项时失败(使用409 Conflict)。

所以 - 我错过了什么?我应该要求具有Artifactory管理员权限的人创建一个组合libs-releaselibs-snapshot的新虚拟仓库吗?或其他什么?

2 个答案:

答案 0 :(得分:2)

可以使用解析存储库来覆盖所有其他存储库定义,并确保从中央存储库中解析所有工件。
这个中央存储库通常是Artifactory中的virtual repository。使用虚拟存储库有许多好处,例如,它允许您控制哪些工件可以解析(通过在虚拟机中添加/删除存储库),而无需更改构建脚本中使用的URL。

解决方案存储库的另一个用途是当插件用于将build information发布到Artifactory时。构建期间解析的所有依赖项的列表将作为构建信息的一部分收集。

请注意,这是一项可选功能。您可以继续使用常规的Gradle方式来配置存储库。

答案 1 :(得分:0)

您获得了409 Conflict,因为有人将您的工件配置为拒绝快照存储库上的发布请求。虚拟仓库是最简单的解决方案,因为它可以在没有这些规则的情况下进行汇总。

/repo是您提及的其他帖子中创建的自定义回购。除非有人在你的神器环境中明确创建它,否则它不会存在。