You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

修改共享库目录为src/main/groovy后,Jenkins Pipeline无法导入类怎么办?

解决Jenkins共享库路径变更后无法导入类的问题

问题场景

此前Jenkins Pipeline导入共享库运行正常,但将Groovy文件所在目录从/src调整为/src/main/groovy后,出现编译错误:

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
12:08:52 WorkflowScript: 11: unable to resolve class com.company.ct.Action

当前Pipeline脚本:

@Library('my-global-libraries') _
import com.company.ct.Action

项目结构:

  • my-global-libraries/src/main/groovy/
  • my-global-libraries/var/

解决方案

Jenkins共享库默认将src/作为类文件的根路径,路径变更后,原有的包结构与导入逻辑不再匹配,可通过以下两种方式修复:

方式1:调整包声明与导入路径(快速临时修复)

因为文件移到了src/main/groovy/下,相当于在原根路径下新增了两层子目录,需要同步修改包结构:

  1. 打开Action.groovy,修改包声明为:
    package main.groovy.com.company.ct
    
  2. 更新Pipeline脚本的导入语句:
    @Library('my-global-libraries') _
    import main.groovy.com.company.ct.Action
    

方式2:修改Jenkins共享库配置(推荐规范做法)

直接告诉Jenkins新的类文件根路径,无需改动代码:

  1. 进入Jenkins管理界面 → 系统管理 → 全局库
  2. 找到my-global-libraries共享库的配置项
  3. 展开高级选项,在源码目录输入框中填写src/main/groovy
  4. 保存配置

完成后原有的import com.company.ct.Action语句可正常使用,无需修改任何代码。

原理说明

Jenkins共享库的默认约定是:

  • src/目录下的Groovy文件按目录层级映射为包结构
  • var/目录用于存放全局变量和流水线步骤
    当类文件的根目录变更时,要么调整包结构适配新路径,要么修改Jenkins配置指定新的类根路径。

内容的提问来源于stack exchange,提问作者user3157090

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 07:50:02