繁体   English   中英

为Jenkins工作流/管道创建Serializable Groovy类的语法是什么

[英]What's the syntax to create a Serializable Groovy Class for Jenkins Workflow/Pipeline

使用Jenkins Workflow Groovy时,我在尝试为死简单类创建对象时遇到了序列化错误。 通过可序列化测试需要什么样的语法糖? 以下代码失败。 添加@Serializable行失败,“类java.io.Serializable不是@ java.io.Serializable中的注释”

//@Serializable 
class TestClass { 
    def hello() { 
        println "halloooo" 
    } 
} 
def myobj = TestClass.newInstance() 
node () { 
    myobj.hello() 
}

感谢izzekil回答这个问题。

class TestClass implements Serializable {}

值得一提的是,Groovy类不需要显式实现Serializable接口 - 任何Groovy类都实现以下两个接口: SerializableGroovyObject

但是,有是一个问题,像在Groovy CPS和詹金斯工作流程CPS库的问题中提到的一个。 它在groovy-cps中得到修复:1.20workflow-cps:2.41

另一方面,使用Class.newInstance()不是初始化Jenkins管道中对象的推荐方法。 默认情况下,此方法被列入黑名单,当您尝试批准它时,Jenkins警告您批准此签名可能会引入安全漏洞。

在此输入图像描述

如果你看看Class.newInstance()方法的实现,你会发现它使用像疯了一样的反射。 在这种情况下,使用new TestClass()而不是TestClass.newInstance()来实例化对象会更好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM