jenkins - 在另一个 java 管道项目中引用库时,在共享库中定义的 @Grab 不起作用
问题描述
我们使用 Groovy 创建了一个管道共享库,并在其中一个 java 项目中引用了它。在运行单个构建时,共享库的构建正在成功,但是当我们引用共享库并运行 java 项目的 jenkins 管道构建时,它会因以下错误而失败。
org.jenkinsci.plugins.workflow.cps.CpsCompilationErrorsException: startup failed:
file:/var/lib/jenkins/jobs/Pipeline%20Test/jobs/pipeline-test/branches/develop/builds/10/libs/c3-shared-library/src/com/test/c3/http/JenkinsHttpClient.groovy: 6: unable to resolve class jodd.http.HttpRequest
@ line 6, column 1.
@Grab("org.jodd:jodd-http:5.1.0")
c3-shared-library - JenkinsHttpClient.groovy:
#! /usr/bin/groovy
package com.test.c3.http
import com.cloudbees.groovy.cps.NonCPS
import groovy.json.JsonBuilder
@Grab("org.jodd:jodd-http:5.1.0")
import jodd.http.HttpRequest
import jodd.http.HttpResponse
class JenkinsHttpClient implements Serializable {
private String userAgent
JenkinsHttpClient(String userAgent = "Jenkins"){
this.userAgent = userAgent
}
特此附上jenkins配置。请检查并提供您的宝贵意见。
共享库管道 build.grade:
group "com.test.c3"
version "1.0.0-develop-SNAPSHOT"
apply plugin: 'maven'
apply plugin: 'groovy'
repositories {
mavenCentral()
}
compileGroovy {
groovyOptions.configurationScript = file("gradle/config.groovy")
}
sourceSets {
groovy {
main.groovy.srcDirs += 'src/'
main.groovy.srcDirs += 'vars/'
test.groovy.srcDirs += 'tests/'
}
}
dependencies {
compile "org.apache.ivy:ivy:2.5.0"
compile 'org.codehaus.groovy:groovy-all:2.5.9'
compile 'org.jodd:jodd-http:5.1.0'
compile 'com.cloudbees:groovy-cps:1.31'
testImplementation group: 'junit', name: 'junit', version: '4.4'
}
解决方案
推荐阅读
- c# - 如何使用 iText 更改现有 PDF 复选框的导出值
- javascript - 使用 javascript 将裁剪后的图像发送到我的服务器的问题
- jquery - GET 请求在窗口滚动时触发两次
- html - 水平引导导航栏垂直显示 - 为什么?
- r - 迭代地找到子集的最小值 - (数百万次)
- php - 当 Woocommerce 订单通知中的成本为零时,将 0.00 欧元附加到运输标签
- c++ - 无法再从 QTreeWidget 中获取 QGesture 事件
- sql-server - SSRS 报告仅在左上角打印,无论页面大小如何
- spring - 我们如何知道 HikariCp 何时完全初始化了它的池?
- c# - 无法将类型 bool 隐式转换为 System.Threading.Tasks.Task