【发布时间】:2019-06-19 19:26:24
【问题描述】:
我在一个 groovy 文件中有以下内容...
// jenkins/Application.groovy
package jenkins
class Application{
String name
Application(name){
this.name = name
}
}
我正在尝试导入它,我已经尝试了这些,但似乎没有一个有效。这些都在 jenkins/Test.groovy
final GroovyScriptEngineImpl engine = (GroovyScriptEngineImpl) this.scriptingEngines.getEngineByName("groovy");
GroovyClassLoader classLoader = engine.getClassLoader();
classLoader.parseClass(new GroovyCodeSource("./jenkins/Application.groovy"))
engine.setClassLoader(classLoader)
这给了..
Script1.groovy: 17: 无法解析类应用程序
然后我尝试了...
// jenkins/Application.groovy
// Added
return { Application }
// jenkins/Test.groovy
app = load "./jenkins/Application.groovy"
def dna = new app.Application("blah")
我得到...
Script1.groovy: 11: 无法解析类 app.Application
如何在 Jenkins GroovyScript 中导入调用?
更新
我将代码更改为以下内容(并移至域文件夹中)...
app = load "./jenkins/domain/Application.groovy"
def dna = app.newInstance([name:"blah"] as Object[])
当我跑步时,我得到...
org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException:脚本不允许使用 staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods newInstance java.lang.Class java.lang.Object[]
【问题讨论】:
-
它是 Jenkins 管道吗?或者只是 Jenkins 中的 groovy 插件?
-
它是一个管道
-
如果它在同一个文件中也可以正常工作
-
为什么不使用标准方式:jenkins.io/doc/pipeline/steps/workflow-cps?