gpt4 book ai didi

gradle - gradle:如何在配置阶段使用任务结果(插件ospackage)

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

我有一个gradle脚本,其中我使用一个变量来配置一个插件(在我的情况下是ospackage,但我想同样适用于另一个插件):

ospackage {
...
version project.ext.my_version
...
}

首先初始化此变量,然后使用我在构建脚本中首先调用的任务对其进行更新:
  ext {
...
my_version = "XXX"
...
}

task init{
group 'ho'
description 'get HO Version'
doLast {
...
project.ext.my_version = getParameter("VERSION")
...
}
}

问题是插件(在我的情况下为ospackage)始终考虑初始值“XXX”,而不是通过执行init任务设置的正确值。
我知道它与配置和执行阶段有关,但是仍然找不到解决方法来完成我想要的事情。

对于信息,我也尝试创建一个类似于以下任务的任务,但由于buildDeb任务似乎不会覆盖ospackage版本参数,因此它也失败了
buildDeb {
doLast {
...
version project.ext.my_version
link('/usr/bin/aa', '/usr/bin/aa.sh')
...
}
}

我还尝试在文件末尾添加以下内容:
ospackage.dependsOn("init")

但问题是ospackage无法识别为任务

预先感谢您的帮助。

最佳答案

在我看来,您的问题的实质围绕着按需值(value)观。我的理解是,您想在配置阶段设置版本号,并在执行阶段使用该值来使用ospackage插件设置软件包版本。
问题是ospackage文档仅提供了示例(到目前为止),这些示例在配置阶段设置了软件包常量。显然,这是行不通的,因为这是在同时设置版本(必须能够并行完成的操作)。您对doLast有正确的想法。我发现ospackage中的某些内容无法放入packageName这样的“doLast”块中(如果您具有多个相同的包/任务类型),因此我只是将需要按需评估的内容放入该块中(版本,因为我们需要将其评估延迟到执行阶段)。
我的解决方案是创建一个包含解析版本功能的变量。

def versionForRpm = { -> project.version }
创建一个配置块
configurations.ext {
version = versionForRpm
...
}
这是按需值(也称为延迟评估值)的示例。
task someRpmBuild(type: Rpm) {
// all package configs that require evaluation during execution phase (lazy)
doLast {
version = configurations.ext.version
requires("someotherpackageinthisbuild", configurations.ext.version(), 0)
}
// all package configs that may be evaluated during the configuration phase
release = configurations.ext.release
packageGroup = configurations.ext.packageGroup
license = configurations.ext.license
packager = configurations.ext.packager
user = configurations.ext.user
distribution = configurations.ext.distribution
vendor = configurations.ext.vendor
url = configurations.ext.url
os = configurations.ext.os
buildHost = configurations.ext.buildHost
epoch = configurations.ext.epoch
arch = configurations.ext.arch
}
注意 configurations.ext.version在执行阶段将被自动“调用”。但是,当在 requires中用作参数时,我需要显式调用它。

关于gradle - gradle:如何在配置阶段使用任务结果(插件ospackage),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53097115/

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