我正在使用Gradle Jenkins插件来创建执行Gradle构建的Jenkins Job。我有几个总是需要的参数,这些参数传递给Jenkins的“参数化构建”。这些参数将使用以下格式正确传递到gradlew.bat:
-DParam1=value1
现在,有一些其他参数是动态的,我更喜欢使用单个Jenkins参数,例如“ AdditionalParamters”,并像这样传递这些值:
"-DoptionalParam1=value1 -DOptionalParam2=value2".
如果我使用这样的参数,则传递给Gradle的值为“ -DAdditionalParamters = -DOptionalParam1 = value1 -DOptionalParam2 = value2”,这不是我想要传递的。
那么,有没有办法使用单个Jenkins参数将多个系统参数传递给gradle?
当詹金斯将参数传递给Gradle时,它们将被设置为“系统属性”。现在的任务是解析作为“附加参数”传递的“ -DoptionalParam1 = value1 -DOptionalParam2 = value2”,然后将它们作为JVM参数传递给Java应用程序。以下是执行此操作的Gralde代码段。为了简化“附加参数”,将其传递为“ optionalParam1 = value1 OptionalParam2 = value2”,即不使用-D语法。
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'
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句