Pass Spring Boot jar name to Gradle Groovy script
我有一个gradle脚本,在生成SpringBoot jar文件后运行:
1 2 3 4 | task runScript (dependsOn: 'bootJar', type: JavaExec) { main = 'postpackage' classpath = sourceSets.main.runtimeClasspath } |
到目前为止,gradle脚本仅显示一条消息:
1 | println"hello world from groovy version ${GroovySystem.version}" |
这在我的版本中正常工作。
gradle runScript
Task :runScript hello world from groovy version 2.4.15
blockquote>
我想要的是这样的:
1 println"hello world generated jar file name is ${jarFileName}"我想要做的是传入SpringBoot生成的jar名称,或者传入
build/libs/my-service-0.1.1.jar 中的jar名称或其他名称。因此它将打印:
hello world generated jar file name is my-service-0.1.1.jar
我该怎么做?
这是我尝试的方法:
postpackage.groovy:
1
2
3 println"hello world from groovy version ${GroovySystem.version}"
println"hello world from groovy version $bootJar.archiveName"build.gradle:
1
2
3
4 task runScript (dependsOn: 'bootJar', type: JavaExec) {
main = 'postpackage'
classpath = sourceSets.main.runtimeClasspath
}这是错误:
Task :runScript FAILED
hello world from groovy version 2.4.15 Exception in thread"main"
groovy.lang.MissingPropertyException: No such property: bootJar for
class: postpackage
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:66)
您应该能够将bootjar称为" jar"。
打印语句示例:
1 println"hello world from groovy version ${jar.archiveName}"
答案:
通过build.gradle传递参数,如下所示:
1
2
3
4
5 task runScript (dependsOn: 'bootJar', type: JavaExec) {
main = 'postpackage'
classpath = sourceSets.main.runtimeClasspath
args"${bootJar.archiveName}"
}在脚本中像这样引用它:
1
2
3 println"hello world from groovy version ${GroovySystem.version}"
println"hello world from groovy version ${args[0]}"工作正常:
:bootJar UP-TO-DATE :runScript hello world from groovy version 2.4.15
hello world from groovy version my-service-0.1.1.jar
1
2
3 BUILD SUCCESSFUL in 2s
5 actionable tasks: 1 executed, 4 up-to-date
12:36:00 PM: Task execution finished 'runScript'.