0

Job DSLを使用して、複数の Maven ステップを実行する必要があるジョブを定義しています。これは例です:

def mavenInst = 'maven-3x'
job('test') {
  steps{           
    maven {
      mavenInstallation(mavenInst)       
      goals('fuu')
    }
    maven {
      mavenInstallation(mavenInst)       
      goals('bar')
    }
    // more steps of the same form.
    maven {
      mavenInstallation(mavenInst)       
      goals('fuu bar')
    }
  }
}

そのため、多くのコードが頻繁に繰り返されます。

ジョブ記述のそれぞれの部分を抽出して、ジョブ DSL 内から呼び出すことは可能ですか? 私は次のようなものを想像します:

def mavenInst = 'maven-3x'
job('test') {
  steps{                  
    myCustomStep('fuu')
    myCustomStep('bar')
    // more steps of the same form.
    myCustomStep('fuu bar')
  }
}

これにより、コードが大幅に削減され、将来の変更が容易になります。

手順には何らかのコンテキストが必要であると読みましたが、その方法がわかりません。次のようにブロックをconfigureクロージャーに抽出しようとしました:

def fuubar = { it -> 
  mavenInstallation(mavenInst)
  goals('fuu bar')
}

しかし、要素を で呼び出すとconfigure fuubar、結果のジョブ configure.xml には何も表示されません。

どんな助けでも大歓迎です。

4

2 に答える 2

1

同様の問題が発生したため、なんとかそれに取り組むことができ、カスタマイズで再利用可能なメソッドが必要でした。メソッドで複数のステップをカプセル化できるかどうかはわかりませんが、次のようにクロージャーをカプセル化できます。

Closure runInLatestInstallation(String moduleName, String mavenGoals) {
    return {
        rootPOM("${moduleName}/pom.xml")
        goals(mavenGoals)
        mavenInstallation('Latest')
    }
}

次のように呼び出すことができます。

maven runInLatestInstallation(moduleName, 'versions:update-parent')
于 2016-08-18T14:34:40.380 に答える