如何访问时髦类文件中的全局变量



我有以下目录结构

(root)
+- src                     # Groovy source files
|   +- org
|       +- foo
|           +- Bar.groovy  # for org.foo.Bar class
+- vars
|   +- foo.groovy          # for global 'foo' variable

我在以下文件中有以下代码行

  1. Bar.groovy

    package org.foo
    class Bar implements Serializable {
      def config
      def script
      Bar(script, config){
        this.script = script
        this.config = config
      }
      def accessGlobalVars(){
        this.script.echo "${foo.GlobalVar}" // throws an err
      }
    }
    
  2. foo.groovy

    import groovy.transform.Field
    @Field GlobalVar="Hello World!"
    

我能够访问脚本块内 Jenkinsfile 中的变量

echo "${foo.GlobalVar}"

是否可以访问类中的相同变量,因为 vars 文件夹位于 src 文件夹级别?

示例代码中的"${foo.GlobalVar}"正在尝试针对Bar类型解析foo。由于没有foo引用,因此无法解析,您可能会得到类似MissingPropertyException的东西。

Jenkins Pipeline Groovy 使用 Groovy 编译和运行时 API 进行一些不同的编译和绑定。全局变量也可以通过script对象的动态GroovyObject API 进行解析(在此处的源代码中演示(。最简单的方法是让 Jenkins 实现的动态 Groovy 对象解析解析您的变量。

将您的线路从:

this.script.echo "${foo.GlobalVar}"

要从 script 对象中查找foo(我假设这是 Jenkins 管道中的thisscript new Foo(this, config)(:

this.script.echo "${this.script.foo.GlobalVar}"

相关内容

  • 没有找到相关文章

最新更新