gpt4 book ai didi

gradle - 如何访问发行文件

转载 作者:行者123 更新时间:2023-12-03 05:06:28 25 4
gpt4 key购买 nike

我有一个gradle项目,它将配置树发布到服务器端点

plugins {
id 'base'
id 'distribution'
}

distributions {
main {
contents {
from('backends') { into '/backends' }
from('trees') { into '/trees' }
}
}
}

task uploadConfigurations(type: Exec, dependsOn: distZip) {
group = "upload"
description = "some description"
def zipFile = distZip.archiveFile.get().asFile.absolutePath
executable "curl"
args "-v", "localhost:8080/my/resource/path", "--data-binary", "@$zipFile"
}

虽然该解决方案有效,但我怀疑还有比我麻烦的访问归档文件的更优雅的解决方案
def zipFile = distZip.archiveFile.get().asFile.absolutePath

最佳答案

好吧,一个解决方案是否优雅是基于意见的,但是我将提出一个解决方案,该解决方案还具有更多优势:

task uploadConfigurations(type: Exec) {
group = "upload"
description = "some description"
inputs.files(distZip)
executable "curl"
doFirst {
def zipFile = inputs.files.singleFile.absolutePath
args "-v", "localhost:8080/my/resource/path", "--data-binary", "@$zipFile"
}
}

第一个更改添加了一个称为增量构建支持的Gradle功能。通过将任务 distZip注册为任务 uploadConfigurations的输入,可以隐式注册任务之间的依赖关系(无需 dependsOn)。此外,如果任务 uploadConfigurations的输出未更改,Gradle将执行最新检查,并跳过任务 distZip的执行。实际的文件路径也可以通过任务输入来解析。

第二个区别是 doFirst闭包,用于设置 args任务的 Exec。它确保尽快解决文件的实际路径,一旦配置了任务 uploadConfigurations,便允许构建脚本的其他部分更改值。要检查当前构建脚本的此限制,请在任务定义之后插入 distZip.archiveFileName = 'myDist.zip'行。

最后,以上代码段的另一个优点是定义了两个任务之间的耦合的单点( inputs.files(distZip))。在当前脚本中,您需要更改任务依赖性和文件名的解析度。

关于gradle - 如何访问发行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57757276/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com