Oli*_*ver 2 jenkins jenkins-shared-libraries
我在 repo 中有一个 Jenkins 共享库,通常的文件夹结构是:
vars
utils.groovy
Run Code Online (Sandbox Code Playgroud)
在 utils.groovy 我有一些功能:
void funcA() {}
void funcB() {}
Run Code Online (Sandbox Code Playgroud)
现在我想定义一个该模块中的所有函数都可以使用的常量,但是当我尝试这样做时:
String common='hi'
void funcA() {println "A ${common}"}
void funcB() {println "B ${common}"}
Run Code Online (Sandbox Code Playgroud)
我得到一个例外,common 不是一个存在的符号:
groovy.lang.MissingPropertyException: No such property: common for class: utils
Run Code Online (Sandbox Code Playgroud)
现在我通过做这个 hack 来解决这个问题:
String _getCommon() {
return 'hi'
}
void funcA() {String common=_getCommon(); println "A ${common}"}
void funcB() {String common=_getCommon(); println "B ${common}"}
Run Code Online (Sandbox Code Playgroud)
模块级变量可以通过@Field 定义:
import groovy.transform.Field
@Field var =...
void func() {println var}
Run Code Online (Sandbox Code Playgroud)
同一个库中的其他模块也可以引用它,这是通常的方式。假设上述内容是在 utils.groovy 中定义的,other.groovy 可能有:
void func() {println utils.var}
Run Code Online (Sandbox Code Playgroud)
请参阅http://docs.groovy-lang.org/latest/html/gapi/groovy/transform/Field.html。
| 归档时间: |
|
| 查看次数: |
4412 次 |
| 最近记录: |