相关疑难解决方法(0)

Groovy:"def x = 0"中"def"的目的是什么?

在下面的一段代码中(取自Groovy Semantics Manual页面),为什么要使用关键字为赋值添加前缀def

def x = 0
def y = 5

while ( y-- > 0 ) {
    println "" + x + " " + y
    x++
}

assert x == 5
Run Code Online (Sandbox Code Playgroud)

def关键字可以被删除,这个片段将产生相同的结果.那么关键字的效果def什么?

groovy keyword

175
推荐指数
6
解决办法
8万
查看次数

如何在Groovy中创建和访问全局变量?

我需要在一个方法中将值存储在变量中,然后我需要在另一个方法或闭包中使用该变量中的值.我该如何分享这个价值?

groovy

112
推荐指数
5
解决办法
12万
查看次数

如何在脚本化詹金斯管道中定义全局变量

我想在 Jenkins 脚本管道中定义一个全局变量,可以在管道中的任何位置访问该变量。即任何阶段、任何方法。如果我在管道顶部定义 var,它可以在声明nodestage声明中工作,但不能在被调用的方法中工作。我不想使用 env.XXX 和 withEnv([]) 因为我可能必须从不同的地方调用这些方法,这意味着有时会使用 env,而不是其他的。

这是我用于脚本化管道的简单 JenkinsFile:

def jenkinsNode = 'linux'
def DEBUG = 1

node(jenkinsNode){
  echo ">> node($jenkinsNode)"
  echo "DEBUG = $DEBUG"

  if (DEBUG) {
    echo "DEBUG is On"}
  else {
    echo "DEBUG is Off"
  }

  stage('test-this') {
    if (DEBUG) {
      echo "DEBUG is On"}
    else {
      echo "DEBUG is Off"
    }

    testMethod()
  }
  echo "<< node($jenkinsNode)"
}

def testMethod() {
  echo ">> testMethod()"

  if (DEBUG) {
    echo "DEBUG is On"} …
Run Code Online (Sandbox Code Playgroud)

pipeline jenkins cloudbees jenkins-pipeline

3
推荐指数
1
解决办法
1万
查看次数