我有以下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') } }
但是从gradle函数内部看不到该gradlew函数。什么是正确的方法?
gradle
gradlew
大括号形成Groovy闭合。每个闭包都有一个委托对象,方法调用定向到该委托对象。可以通过委托属性访问委托。您可以将该委托传递给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') } }