我有 4 个 groovy 脚本(2 个是 dsl.groovy 脚本):
JobConfig.groovy:
class JobConfig {
final name
JobConfig(map) {
name = map['name']
}
}
顶级.groovy:
import JobConfig.*
def doSmthWithJobConfig(final JobConfig config) {
println(config.name);
}
sublevel1.dsl.groovy:
GroovyShell shell = new GroovyShell()
def topLevelScript = shell.parse(new File("topLevel.groovy"))
def jobConfigs = [
new JobConfig(name: 'JenkinsTestDSLs'),
new JobConfig(name: 'JenkinsTestDSLs2')
]
jobConfigs.each {
topLevelScript.doSmthWithJobConfig(it);
}
sublevel2.dsl.groovy:
GroovyShell shell = new GroovyShell()
def topLevelScript = shell.parse(new File("topLevel.groovy"))
def jobConfigs = [
new JobConfig(name: 'JenkinsTestDSLs3'),
new JobConfig(name: 'JenkinsTestDSLs4')
]
jobConfigs.each {
topLevelScript.doSmthWithJobConfig(it);
}
现在,如果我在本地做:
groovyc JobConfig.groovy
,我在本地运行脚本没有问题。
但是在詹金斯上,即使我在这些脚本所在的同一位置提供 JobConfig.class,我也无法让它运行。我在这里读到,只要 JobConfig.groovy 在 CLASSPATH 上,我就不需要进行任何编译。我如何用詹金斯做到这一点?还是有其他解决方案?