【发布时间】: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>
这意味着我无法将我的版本链接到用于其构建的特定库版本。
我想做的是让给予工件的依赖版本成为构建中使用的特定解析版本。
我已经确定了一些东西,都非常老套,并且觉得必须有更好的方法。
这是我想到/尝试过的:
- 自己解决依赖并在 gradle 依赖 dsl 中设置特定版本,所以要 gradle 它看起来像特定版本。使用 ivy 获取已解决的依赖版本,证明它应该更难。
- 在 xml 写入之后但在发送到 artifactory 之前将其弄脏。这在很多层面上都很糟糕,而且将来很容易崩溃。
- 使用单独的 gradle 项目来确定解析的版本并将其写入属性文件,然后与 #1 类似地使用该文件。这感觉有点矫枉过正。
总体而言,这似乎是一个简单的问题,我一生都找不到合适的解决方案。
【问题讨论】:
标签: gradle artifactory