我有以下JobDSL规范:
job {
steps {
gradle('generateLock saveLock', '-PdependencyLock.includeTransitives=true', true) { node ->
node / wrapperScript('${NEBULA_HOME}/gradlew')
}
gradle('check', '', true) { node ->
node / wrapperScript('${NEBULA_HOME}/gradlew')
}
}
}
我想重构公共代码,比如说,将其重构为一个函数:
def gradlew(String tasks, String options) {
gradle(tasks, options, true) { node ->
node / wrapperScript('${NEBULA_HOME}/gradlew')
}
}
但是在gradlew
函数中看不到gradle
函数。这样做的正确方法是什么?
发布于 2015-01-14 05:53:33
花括号形成了一个Groovy闭包。每个闭包都有一个委托对象,方法调用被定向到该委托对象。并且可以通过delegate属性访问该委托。您可以将该委托传递给helper函数以访问其方法。
def gradlew(def context, String tasks, String options = '') {
context.gradle(tasks, options, true) { node ->
node / wrapperScript('${NEBULA_HOME}/gradlew')
}
}
job {
steps {
gradlew(delegate, 'generateLock saveLock', '-PdependencyLock.includeTransitives=true')
gradlew(delegate, 'check')
}
}
https://stackoverflow.com/questions/27931795
复制相似问题