使用此关键字作为 Jenkins 文件中类构造函数的参数

k_v*_*ath 5 java groovy jenkins jenkins-pipeline

我最近在 Jenkinsfile 中遇到了以下几行

def obj = new Foo(this, params)
obj.someMethod()
Run Code Online (Sandbox Code Playgroud)

this 关键字作为类构造函数的参数有什么用?

k_v*_*ath 1

此关键字用于将管道步骤传递给库类、构造函数或仅一个方法

假设我有以下管道

pipeline{
  agent any
  stages {
    stage {
      steps {
        echo "Inside Steps block"
        script {
           echo "Hello World"
           sh 'date'
           def obj = new Bar(this)
           obj.test()
        }
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

这就是类文件的样子

class Bar implements Serializable {
  def steps
  Bar(steps) {
    this.steps = steps
  }

  void test() {
    this.steps.echo 'Hello World inside class Method'
    this.steps.sh 'date'
  }
}
Run Code Online (Sandbox Code Playgroud)

因此,基本上,您可以在管道内执行的任何步骤都可以通过将此关键字传递给类构造函数来在 groovy 类中使​​用

更多信息可以从官方文档中找到