Gradle + Artifactory插件:尝试发布已解析的依赖项版本

时间:2013-07-12 18:30:59

标签: gradle artifactory

在gradle项目中,我将依赖项设置为:

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

使用最新发布的Libraries版本,效果很好。

然后我通过以下方式将我构建的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>

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

我想要做的是将artifactory的依赖版本作为构建中使用的特定解析版本。

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

以下是我的想法/尝试过:

  1. 自行解决依赖关系并在gradle依赖关系dsl中设置特定版本,因此要将其视为特定版本。使用常春藤来获得证明其应该更难的依赖的解析版本。
  2. 在写入xml之后但将其发送到artifactory之前。这在很多层面上都很糟糕,并且在将来容易破裂。
  3. 使用单独的gradle项目确定已解析的版本并将其写入属性文件,然后使用与#1类似的方式。这感觉就像是矫枉过正。
  4. 总的来说,这似乎很简单,对于我的生活,我找不到合适的解决方案。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

帖子

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

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

相关问题