0

在 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
        }
    }
}

在大多数情况下工作正常。

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

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

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

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

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

这是我想到/尝试过的:

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

总的来说,这似乎很简单,对于我的生活,我找不到合适的解决方案。

4

2 回答 2

0

我不确定 Gradle 会在 pom.xml 中用它做什么,但您可以尝试使用Artifactory 的功能来检索最新版本,而不是 Gradle 的功能。

于 2013-07-14T08:10:54.027 回答
0

帖子

在 Gradle 中,如何生成具有解析为实际使用版本的动态依赖项的 POM 文件?

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

于 2015-09-02T12:57:43.477 回答