Jenkins Nexus3扩展选择参数插件过滤失效,仅需获取Zip文件
解决Nexus3 Extended Choice Parameter插件Raw仓库Packaging过滤失效问题
问题根源
Raw类型仓库的文件元数据和Maven仓库逻辑不匹配,插件默认的packaging过滤是基于Maven构件的groupId/artifactId/packaging三元组规范设计的,但Raw仓库没有这些元数据字段,插件无法将文件后缀识别为packaging值,导致设置packaging=zip时无结果返回。
可行解决方案
1. 用Repository Path规则替代Packaging过滤
在插件配置中找到Repository Path字段,根据文件存放路径填写匹配规则:
- 若zip文件在仓库根目录,填
*.zip - 若存在子目录,填
**/*.zip(递归匹配所有子目录下的zip文件)
同时保持groupId=*、artifactId=*,packaging字段留空或设为*,即可只返回zip格式文件。
2. 自定义Groovy脚本调用Nexus API过滤
如果路径过滤不够灵活,可使用插件的Script模式(部分版本支持),通过Groovy脚本直接请求Nexus API并过滤文件:
import groovy.json.JsonSlurper // 替换为你的Nexus实例地址和Raw仓库名称 def nexusApi = "http://your-nexus-address/service/rest/v1/assets?repository=your-raw-repo&sort=created&direction=desc" def conn = new URL(nexusApi).openConnection() conn.setRequestMethod("GET") conn.setRequestProperty("Accept", "application/json") def respData = new JsonSlurper().parseText(conn.inputStream.text) // 过滤出后缀为zip的文件,提取文件名 def zipAssets = respData.items.findAll { it.path.endsWith(".zip") }.collect { it.name } return zipAssets.join("\n")
将脚本配置到插件的Script选项中,即可精准获取最新的zip文件列表。
3. 统一文件后缀大小写
检查Raw仓库中的zip文件后缀是否为小写.zip,插件过滤规则默认区分大小写。如果存在大写.ZIP的文件,需统一为小写,或在路径规则中写*.{zip,ZIP}实现大小写兼容。
内容的提问来源于stack exchange,提问作者Nikhil Mehta
相关产品推荐
相关产品推荐

