gpt4 book ai didi

gradle - 当变量改变时重新运行 processResoures

转载 作者:行者123 更新时间:2023-12-04 04:25:15 24 4
gpt4 key购买 nike

我最近开始使用 gradle。我很快发现您可以使用以下代码段轻松告诉 gradle 自动检测当前版本:

def getVersionName = { ->
def stdout = new ByteArrayOutputStream()
exec {
commandLine 'git', 'describe', '--dirty=-SNAPSHOT'
standardOutput = stdout
}
return stdout.toString().trim()
}

version = getVersionName()

我发现您可以将该版本号替换为您的资源,如下所示:
processResources {
expand(version: version)
}

在文件中,您希望拥有这样的版本号(应该适用于任何变量)
version: ${version}

替换效果很好,并且按预期工作。

但是,当版本号更改并且没有资源执行时,我遇到了一个问题,即资源没有得到重新处理,因此版本号不会在这些文件中更新。
我通过告诉任务每次都像这样运行来稍微解决了这个问题:
processResources {
expand(version: version)

outputs.upToDateWhen { false }
}

这是有效的,但我觉得这是一个非常肮脏的黑客。

我想要的是一种逻辑,每当资源文件发生变化(就像它已经发生的那样)或版本号(或我想要关心的任何变量或变量)发生变化时,它都会重新运行任务。

如果有人感兴趣,这里是实际文件的链接: https://gitlab.crazyblock-network.net/BrainStone/MplManager/blob/master/build.gradle
这是 repo : https://gitlab.crazyblock-network.net/BrainStone/MplManager

最佳答案

这应该可以解决问题:

def tokens = [
'version': version
]

processResources {
inputs.properties(tokens)
expand(tokens)
}

关于gradle - 当变量改变时重新运行 processResoures,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38114352/

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