2016-04-11 11 views
0

Gradle Jenkins eklentisini kullanarak Gradle oluşturma işlemini gerçekleştiren bir Jenkins Job'u oluşturun. Her zaman gereken birkaç parametreye sahibim ve bunlar bir Jenkins "Parametreli yapı" ya aktarıldı. Bu parametreler doğru aşağıdaki biçimde gradlew.bat iletilir:Dinamik parametreleri Gradle Jenkins eklentisine aktarın

-DParam1=value1 

Şimdi orada doğada dinamik bazı ek parametrelerdir ve böyle "AdditionalParamters" ve pas gibi tek Jenkins parametresini kullanmayı tercih ediyorum şöyle bu değerler: böyle bir parametre kullanırsanız

"-DoptionalParam1=value1 -DOptionalParam2=value2". 

ardından Gradle geçirilen değer "-DAdditionalParamters = -DoptionalParam1 = değer1 -DOptionalParam2 = deger2" olduğunu ve bu geçmek amaçlanan ediyorum ne değildir .

Tek bir Jenkins parametresi kullanarak birden çok Sistem parametresini geçirecek herhangi bir araç var mı?

+0

Neden birden çok sistem özelliğini bir anahtarla iletmek istiyorsunuz? Avantajı nedir? –

+0

@BenGreen, Çoğu varsayılanı olan 50'den fazla farklı yapılandırma özelliğine sahibiz. Bununla birlikte, bir sistem özelliği ayarlayarak bunların varsayılan değerlerini değiştirmemiz gerekebilir. Yani eğer değişmemiz gerekiyorsa, 48 ve 49'uncu özelliği varsa, bunu -DoptionalParam48 = value48 -DOptionalParam49 = value49 olarak ayarlayabiliriz49 –

+0

Bu yüzden neden kontrol ediyorsanız jenkins işinde -DoptionalParam48 = değer48'e sahip olamazsınız. gradle de parametreleri? -DAdditionalParameters = -DoptionalParam48 = değer48 –

cevap

0

Jenkins parametreleri Grabil'e geçirdiğinde, Sistem Özellikleri olarak ayarlanır. Buradaki görev, "Ek Parametreler" olarak geçirilen "-DoptionalParam1 = value1 -DOptionalParam2 = value2" yi ayrıştırmak ve daha sonra JVM parametrelerine göre Java uygulamasına iletmektir. Aşağıda, bunu yapan Gralde kod snippet'idir. "Ek Paramter" in basitleştirilmesi için "optionalParam1 = value1 OptionalParam2 = value2", yani -D sözdizimi olmadan iletilir.

task runJavaApp(type: JavaExec, dependsOn: build) { 

     def jvmParams = [] 
     project.gradle.startParameter.systemPropertiesArgs.entrySet().each{ 
     if (it.key!="Additional Parameters") { 
      jvmParams << "-D${it.key}=${it.value}" 
     } else { 
      def tokens = (it.value).split(/\s{1,}/) 
      tokens.each { 
       def key, value 
       if (it.split('=').length == 2) 
        (key, value)= it.split('=') 
       else 
        throw new Exception("'${it}' should be of type key=value"); 
       jvmParams << "-D${key}=${value}" 
       } 
      }//if 
     } 
     jvmArgs jvmParams 
     workingDir = project.executeDir 
     classpath = sourceSets.main.runtimeClasspath + files(project.executeDir) 
     main = 'myApplicaionMainClass' 
    }