替换正在运行的Groovy脚本的类路径(Jenkins管道脚本)

时间:2016-02-25 20:39:18

标签: jenkins groovy classloader jenkins-workflow groovyclassloader

在Jenkins Pipeline中,我们有一个由CPSGroovyShell执行的CpsGroovyScript,它带有一个自定义类路径,该路径附加了Global Library位置的路径。

为了能够在我的Jenkins实例上的所有管道可用之前测试我的更改,我想通过卸载类并在运行时从自身修改脚本的类路径来覆盖类路径。

我的想法是前面添加一个新位置的当前类路径,以便首先找到更改的类。 if很棒,但是新路径到了classpath的末尾。

this.class.classLoader.addURL() - 这是当前生产代码的根,默认情况下在classpath中 .../src - 这是我更改的代码的根,我希望使用它而不是.../branch-src

例如,当我致电.../src.../src/com/foo/Bar.groovy

时,我希望.../branch-src/com/foo/Bar.groovy覆盖课程import com.foo.Bar

如果这根本无法工作,那么还有其他任何黑客攻击,即完全替换原始类路径,或替换整个类加载器,无论如何。

0 个答案:

没有答案