Jenkins Active Choices参数填充如何去除文件名.properties后缀
问题描述
某目录下存放了一组properties配置文件,示例文件名如下:
- sample1.properties
- sample2.properties
- sample3.properties
需要通过Groovy代码将这些文件传入Jenkins Active Choices参数,填充选项列表时要去除文件名末尾的.properties后缀,最终参数的选项展示效果为:
- sample1
- sample2
- sample3
原有实现代码如下:
def reader = new BufferedReader(new InputStreamReader(conn.getInputStream())) def results = new JsonSlurper().parseText(reader.getText()); reader.close() data= results.tree.path data.each { it -> if(it.endsWith(".properties")) choices.push(it.replace("/","" ) ) } choices=choices.sort() choices.add(0,"SELECT") return choices
调整方法
原有代码仅处理了路径中的斜杠替换,没有对.properties后缀做截断,同时缺少choices列表的初始化逻辑,调整后完整代码如下:
import groovy.json.JsonSlurper def choices = [] def reader = new BufferedReader(new InputStreamReader(conn.getInputStream())) def results = new JsonSlurper().parseText(reader.getText()) reader.close() def data = results.tree.path data.each { it -> if (it.endsWith(".properties")) { // 先移除路径斜杠,再截断末尾的.properties后缀 def pureFileName = it.replace("/", "") - ~/\.properties$/ choices.push(pureFileName) } } choices.sort() choices.add(0, "SELECT") return choices
核心修改点:
- 补充
choices列表初始化,避免变量未定义的运行时报错 - 文件名处理环节新增后缀截断逻辑,使用Groovy原生正则操作
- ~/\.properties$/精准移除字符串末尾的.properties后缀,不会误删文件名中间出现的相同字符 - 移除不必要的分号和冗余变量赋值,符合Groovy编码习惯
内容的提问来源于stack exchange,提问作者Benny
相关产品推荐
相关产品推荐

