詹金斯:按名称获取文件夹库

时间:2018-07-09 21:28:17

标签: jenkins groovy jenkins-pipeline jenkins-groovy

/vars中,我有AaConfig.groovy的文件夹。

在工作的Groovy脚本中,我有:

#!groovy
@Library('globals') _

Class config = AaConfig

我可以使用config代替AaConfig,在后续代码中没有问题。

  

这很有用,因为我可以调用不同的配置文件:AaConfigBbConfig等,而无需进行任何更改,因为我是通过config 来调用它们的

所以现在我很贪婪:-),并想从外部指定配置文件:

#!groovy
@Library('globals') _

String configName = "AaConfig"
Class config = Class.forName(configName)

现在我得到了:

java.lang.ClassNotFoundException: AaConfig

有什么办法解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

如果要通过反射加载var time = (new Date(str)).toLocaleTimeString(defaultlang, options); 类,则必须使用管道脚本使用的相同的类加载器。在这种情况下,AaConfig使用ClassLoaderForClassArtifacts,而Groovy CPS插件使用CpsGroovyShell$CleanGroovyClassLoader

下面您可以找到使用管道当前类加载器加载类的示例:

Class.forName()