如何下载非依赖工件作为语义版本控制的 buildScript 块的一部分

Posted

技术标签:

【中文标题】如何下载非依赖工件作为语义版本控制的 buildScript 块的一部分【英文标题】:How to download a non-dependency artefact as part of buildScript block for Semantic Versioning 【发布时间】:2014-11-30 09:26:15 【问题描述】:

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

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

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

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

【问题讨论】:

【参考方案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 插件:)

【讨论】:

@Esko,这就是您要找的东西吗?

以上是关于如何下载非依赖工件作为语义版本控制的 buildScript 块的一部分的主要内容,如果未能解决你的问题,请参考以下文章

CI 如何影响语义版本控制?

如何对 Visual Studio 工件进行版本控制?

如何根据语义版本控制自动增加 Web 应用程序版本?

从 sbt 项目的安全工件下载依赖项

创建发布版本后如何管理 Maven 依赖工件

如何找到依赖于另一个工件的工件?