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

替换正在运行的Groovy脚本(Jenkins管道脚本)的类路径,jenkins,groovy,classloader,jenkins-workflow,groovyclassloader,Jenkins,Groovy,Classloader,Jenkins Workflow,Groovyclassloader,在Jenkins管道中,我们有一个由CPSGroovyShell执行的CpsGroovyScript,它带有一个自定义类路径,该类路径附加了全局库位置的路径 为了能够在Jenkins实例上的所有管道中使用更改之前测试更改,我希望通过卸载类并在运行时修改脚本自身的类路径来覆盖类路径 我的想法是在当前类路径前面加上一个新的位置,以便首先找到更改过的类this.class.classLoader.addURL()非常好,但是新路径会到达classpath的末尾 ../src-这是当前生产代码的根,默认

在Jenkins管道中,我们有一个由CPSGroovyShell执行的CpsGroovyScript,它带有一个自定义类路径,该类路径附加了全局库位置的路径

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

我的想法是在当前类路径前面加上一个新的位置,以便首先找到更改过的类
this.class.classLoader.addURL()
非常好,但是新路径会到达classpath的末尾

../src
-这是当前生产代码的根,默认情况下位于类路径中
../branch src
-这是我更改代码的根,我希望使用它而不是
../src

例如,当我调用
import com.foo.Bar
new com.foo.Bar()

如果这根本不起作用,是否还有其他的黑客行为,例如完全替换原始类路径,或者替换整个类加载器,等等