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

如何在Jenkins中用Gradle编译含@Library与@NonCPS的代码

解决脚本式流水线中@Library和@NonCPS的Gradle编译错误

我之前也碰到过一模一样的问题!这俩注解属于Jenkins Pipeline的核心API,但光随便加个workflow依赖还不够,得找对正确的依赖包和配置方式,我给你梳理几个关键步骤:

1. 引入正确的Jenkins Pipeline依赖

@NonCPS和@Library分别来自不同的Jenkins插件依赖,你需要在build.gradle里明确指定这两个依赖(版本尽量和你Jenkins服务器的版本匹配,避免兼容性问题):

dependencies {
    // 提供@NonCPS注解
    compile 'org.jenkins-ci.plugins.workflow:workflow-cps:2.92'
    // 提供@Library注解
    compile 'org.jenkins-ci.plugins.workflow:workflow-libs:2.19'
    // Jenkins核心依赖,避免其他关联API找不到
    compile 'org.jenkins-ci.main:jenkins-core:2.346.3'
}

2. 添加Jenkins官方仓库

Jenkins的插件依赖不在Maven Central上,所以必须在build.gradle里添加Jenkins的公共仓库,否则Gradle拉取不到对应的依赖包:

repositories {
    mavenCentral()
    maven { url 'https://repo.jenkins-ci.org/public/' }
}

3. 调整Java版本兼容

大部分Jenkins版本还是基于Java 8运行的,所以要确保你的Gradle编译配置和Java 8兼容:

sourceCompatibility = 1.8
targetCompatibility = 1.8

4. 注意脚本式流水线的场景差异

如果你只是在Jenkinsfile里直接使用这些注解,其实不需要本地编译Jenkinsfile——Jenkins服务器会自动解析并运行。只有当你把流水线逻辑抽成了独立的Groovy类库(需要本地编译后上传到Jenkins库)时,才需要上面的配置。

按照上面的步骤调整后,应该就能解决找不到注解类的问题了。我当时就是因为漏加了Jenkins的仓库,导致依赖一直拉取不到,折腾了好半天😂

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:16:46