我在Jenkins工作的 post-build 步骤中使用以下代码:
evaluate(new File("Set-BuildBadge.groovy"));
如果不包含函数,它会成功运行脚本。
如果在脚本中我定义了函数,例如:
def addSummaryWithText(Icon, Text) {
manager.createSummary(Icon).appendText(Text, false)
}
...
addSummaryWithText("installer.gif", "Project: " + ProjectName)
然后我收到以下错误:
致命:非法的类名" Set-BuildBadge $ addSummaryWithText"在班上 file Set-BuildBadge $ addSummaryWithText java.lang.ClassFormatError: 非法类名" Set-BuildBadge $ addSummaryWithText"在类文件中 Set-BuildBadge $ addSummaryWithText at java.lang.ClassLoader.defineClass1(原生方法)......
我没有得到 GroovyShell.evaluate 的工作方式。 任何人都可以帮助我吗?
答案 0 :(得分:11)
看起来JVM不喜欢带有连字符的类名。
通过在内部调用脚本Set-BuildBadge.groovy
,它会被编译成一个在向脚本添加函数时不允许的类。
将脚本名称更改为SetBuildBadge.groovy
将修复它: - )