【问题标题】:Gradle + Artifactory plugin: Trying to publish the resolved dependency versionGradle + Artifactory 插件:尝试发布已解析的依赖版本
【发布时间】:2013-07-12 18:30:58
【问题描述】:

在一个 gradle 项目中,我的依赖项设置为:

dependencies {
    compile group: 'com.our_organization.lib', name: 'Libraries', version: '5.+'
    compile group: 'commons-io', name: 'commons-io', version: '2.4'
}

它使用最新发布的库版本,并且运行良好。

然后我通过以下方式将我构建的 jar 发布到 Artifactory:

artifactory {
    contextUrl = artifactory_contextUrl
    publish {
        repository {
            repoKey = publicationRepoKey
            username = artifactory_user
            password = artifactory_password
            maven = true
        }
    }
}

这在大多数情况下都可以正常工作。

但是,当我去 artifactory 并获取任何给定版本的 xml 时,它的依赖项被列为

<dependencies>
  <dependency org="com.our_organization.lib" name="Libraries" rev="5.+" />
  <dependency org="commons.io" name="commons.io" rev="2.4" />
</dependencies>

这意味着我无法将我的版本链接到用于其构建的特定库版本。

我想做的是让给予工件的依赖版本成为构建中使用的特定解析版本。

我已经确定了一些东西,都非常老套,并且觉得必须有更好的方法。

这是我想到/尝试过的:

  1. 自己解决依赖并在 gradle 依赖 dsl 中设置特定版本,所以要 gradle 它看起来像特定版本。使用 ivy 获取已解决的依赖版本,证明它应该更难。
  2. 在 xml 写入之后但在发送到 artifactory 之前将其弄脏。这在很多层面上都很糟糕,而且将来很容易崩溃。
  3. 使用单独的 gradle 项目来确定解析的版本并将其写入属性文件,然后与 #1 类似地使用该文件。这感觉有点矫枉过正。

总体而言,这似乎是一个简单的问题,我一生都找不到合适的解决方案。

【问题讨论】:

    标签: gradle artifactory


    【解决方案1】:

    我不确定 Gradle 会在 pom.xml 中用它做什么,但您可以尝试使用 Artifactory's functionality to retrieving the latest version,而不是 Gradle 的那个。

    【讨论】:

      【解决方案2】:

      帖子

      In Gradle, how can I generate a POM file with dynamic dependencies resolved to the actual version used?

      正好解决了这个问题。但是你必须使用 maven-publish 插件而不是 Artifactory 插件。

      【讨论】:

        猜你喜欢
        • 2015-02-25
        • 2018-07-14
        • 2014-02-10
        • 1970-01-01
        • 1970-01-01
        • 2012-05-09
        • 1970-01-01
        • 2017-08-21
        相关资源
        最近更新 更多