1

首先,我没有要显示的代码,因为我完全被这个难住了。这对于一个 SO 问题来说是一种糟糕的形式,所以我真的很抱歉——我昨天整个工作在相关的构建脚本上,但没有得到任何有用的东西来展示这个。

我目前正在开发一个构建脚本,作为jar任务的一部分(或者更确切地说,它的doLast {}关闭)将使用SemVer API将当前 JAR 与我自己的 Artifactory 中以前发布的 JAR 进行验证。除了实际下载项目的先前版本外,我拥有的所有其他东西都可以使用;我似乎无法设计一个工作脚本。

到目前为止,我的方法是基于这样的推理,即 Gradle 使用 Ivy 作为其依赖管理系统,我应该能够使用正确的参数调用Ivy 的一些 Ant 任务- 与当前项目相同,因此我实际上可以访问组、名称和当前版本很容易 - 然后获取下载的人工制品文件的路径并将其用作上述 SemVer API 的输入。作为一个 Gradle 新手并且实际上已经有几年没有使用 Ivy,即使我的挣扎也向我表明,在这一点上,我不知道如何以一种干净的方式真正做到这一点。到目前为止,我的主要障碍之一是 Gradle 的文档过于广泛,以至于当我什至不记得我想要的某些位的正确术语时,很难找到东西。

由于我没有提供到目前为止我所拥有的任何代码/构建脚本示例,我不介意您的答案是否只是朝着正确的方向轻推。

4

1 回答 1

1

Gradle 已经有一段时间没有在内部使用 Ivy,所以我非常怀疑你使用 Ivy ant 任务的方法是否可行。

我可能会在单独的任务中执行此操作,而不是向 jar 任务添加操作。可能有一种更优雅的方式,但您可以尝试以下方法:

configurations { lastPublishedVersion }
configurations.lastPublishedVersion.transitive=false

dependencies {
  lastPublishedVersion group: group, name: name, version: "+"
}

task checkSemVer {
   dependsOn jar
   dependsOn configurations.lastPublishedVersion
   doLast {
     println configurations.lastPublishedVersion.getSingleFile() 
   }

}

PS 如果你得到这个工作,如果你想发布它,它将成为一个非常有趣的 gradle 插件:)

于 2014-10-06T10:21:23.053 回答