gpt4 book ai didi

jenkins - Groovy:如何将操作字符串定义为变量?

转载 作者:行者123 更新时间:2023-12-04 13:37:13 27 4
gpt4 key购买 nike

我正在编写一个 Jenkins 管道作为 Android 应用程序的代码。

我有以下字符串:

BUILDFLAV = "Staging"
BUILDTYPE = "Debug"

我想定义另一个名为 artifact_name 的变量,它看起来像:
product_name-BUILDFLAV(in lowercase)-BUILDTYPE(in lowercase).apk

例如:
App01-staging-debug.apk

因为我是 groovy 的新手,所以我不确定我是否正确地做这件事。

我定义了两个变量:
aa = BUILDFLAV[0].toLowerCase()+BUILDFLAV.substring(1)
bb = BUILDTYPE[0].toLowerCase()+BUILDTYPE.substring(1)

这允许我将每个字符串的第一个字符从大写更改为小写。

然后,我希望 artifact_name 变量看起来像这样:
App01-$(aa}-${bb}.apk

所以我试过这样的事情:
artifact_name = "App01-${BUILDFLAV[0]}.toLowerCase()+${BUILDFLAV}.substring(1)+${BUILDTYPE[0]}.toLowerCase()+${BUILDTYPE}.substring(1).apk"

但它给我一个错误。

然而,这样做是有效的,但似乎有一种更优雅的方法来做到这一点:
BUILDFLAV = "Staging"
BUILDTYPE = "Debug"
aa = BUILDFLAV[0].toLowerCase()+BUILDFLAV.substring(1)
bb = BUILDTYPE[0].toLowerCase()+BUILDTYPE.substring(1)
ARTIFACT_NAME = "App01-${aa}-${bb}.apk"

如果您问自己为什么我不从一开始就将变量设置为小写是因为在构建中运行的 gradle 任务使用第一个字母大写约定,而我要实现的目标与更高级的步骤有关的构建。

通过在一行中执行我在 vars "aa"和 "bb"中所做的操作,是否有可能获得相同的结果?就像上面带有 artifact_name 的示例...

最佳答案

如果你想在groovy中在字符串中使用模板,你可以把它放在${..}里面就像你已经做的那样。
但是,您需要将需要执行的所有内容放入其中。

所以用

ARTIFACT_NAME = "App01-${BUILDFLAV[0].toLowerCase()}${BUILDFLAV.substring(1).toLowerCase()-${BUILDTYPE[0].toLowerCase()}${BUILDTYPE.substring(1).toLowerCase()}.apk"`

但请注意,没有必要将第一个字符转换为小写然后附加其余字符。下一个将给出相同的结果
`ARTIFACT_NAME = "App01-${BUILDFLAV.toLowerCase()}-${BUILDTYPE.toLowerCase()}.apk"`

如果您出于任何原因想要这样做,您可以使用 BUILDTYPE[1..-1]而不是 BUILDTYPE.substring(1)

关于jenkins - Groovy:如何将操作字符串定义为变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40450338/

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