替换Jenkins扩展选择/活动选择插件复选框分隔符及取值方案
嘿,这个问题我太熟了!当Jenkins复选框默认用逗号分隔值时,确实会让批处理命令卡壳——毕竟你总不能让java命令去执行Test1,Test2这种带逗号的类名对吧?下面分两种插件给你具体的解决办法,还有通用的兜底方案:
解决方法:分场景处理
一、用Active Choice插件的两种思路
Active Choice本身没有直接改分隔符的选项,但我们可以通过Groovy脚本或者后续参数处理来搞定:
1. 用Reactive Reference参数转换格式
- 先创建一个普通的Active Choice Multi Select参数,命名为
ORIGINAL_CLASSES,选项设为Test1、Test2 - 再新增一个Active Choice Reactive Reference参数,命名为
FORMATTED_CLASSES,在“Referenced parameters”里选择刚才的ORIGINAL_CLASSES - 在这个参数的Groovy脚本框里,写一行简单的替换代码:
return ORIGINAL_CLASSES.replaceAll(',', ' ')
这样FORMATTED_CLASSES就是空格分隔的选中值了,直接在批处理里用:
java -cp . %FORMATTED_CLASSES%
2. 直接在批处理里替换分隔符
如果不想多建参数,也可以在构建的批处理步骤里直接把逗号换成空格:
@echo off :: 把逗号分隔的字符串转成空格分隔 set "CLASSES=%ORIGINAL_CLASSES:,= %" java -cp . %CLASSES%
二、用Extended Choice插件(更简单!)
Extended Choice插件本身就支持自定义分隔符,这是最省心的方式:
- 打开任务的参数配置,新增Extended Choice Parameter
- 在“Parameter Type”里选择
Check Boxes,然后把选项设为Test1、Test2 - 找到Delimiter这个选项,把默认的逗号(
,)改成你需要的分隔符(比如空格) - 给参数设置一个变量名,比如
TEST_CLASSES - 最后在批处理里直接用这个变量就行:
java -cp . %TEST_CLASSES%
三、通用兜底方案(适用于任何插件)
不管你用哪种插件,只要拿到的是逗号分隔的字符串,都可以用批处理的字符串替换功能搞定:
@echo off :: 假设你的复选框参数变量是SELECTED_ITEMS set "FORMATTED_ITEMS=%SELECTED_ITEMS:,= %" java -cp . %FORMATTED_ITEMS%
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

