【问题标题】:Jenkins Groovy post-build script to evaluate file with functionJenkins Groovy 构建后脚本来评估文件的功能
【发布时间】:2014-04-03 13:32:12
【问题描述】:

我在 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” 文件 Set-BuildBadge$addSummaryWithText java.lang.ClassFormatError: 类文件中的非法类名“Set-BuildBadge$addSummaryWithText” Set-BuildBadge$addSummaryWithText 在 java.lang.ClassLoader.defineClass1(Native Method) ...

我不明白 GroovyShell.evaluate 的工作原理。 谁能帮帮我?

【问题讨论】:

  • 您可以尝试在脚本名称中不使用连字符吗?
  • 天才!我已经失去了 3 个小时来挖掘 groovy(对我来说是新的),解决方案只是删除 hypen )))
  • 添加为答案! :-) 很高兴它解决了!玩得开心!
  • 非常感谢,伙计!顺便说一句,名声不错……
  • 哈哈,不用担心!而且ta...不确定这是一件好事,还是某种轻度潜在成瘾的迹象;-)

标签: function groovy jenkins


【解决方案1】:

看起来 JVM 不喜欢带有连字符的类名。

通过在内部调用您的脚本Set-BuildBadge.groovy,它会被编译成一个类,当您向脚本添加函数时该类是不允许的。

将脚本名称更改为SetBuildBadge.groovy 将修复它:-)

【讨论】:

    猜你喜欢
    • 2021-04-27
    • 2017-10-18
    • 1970-01-01
    • 2014-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多