在 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,并且觉得必须有更好的方法。
这是我想到/尝试过的:
- 自己解决依赖关系并在gradle依赖dsl中设置特定版本,所以要gradle它看起来像一个特定版本。使用 ivy 来获得已解决的依赖版本,证明它应该更难。
- 在写入之后但在将其发送到工件之前将 xml 弄脏。这在很多层面上都是很糟糕的,并且在未来很容易被打破。
- 使用单独的 gradle 项目来确定解析的版本并将其写入属性文件,然后与 #1 类似地使用该文件。这感觉有点矫枉过正。
总的来说,这似乎很简单,对于我的生活,我找不到合适的解决方案。