【问题标题】:Pass Spring Boot jar name to Gradle Groovy script将 Spring Boot jar 名称传递给 Gradle Groovy 脚本
【发布时间】:2019-04-13 21:04:44
【问题描述】:

我有一个在 SpringBoot jar 文件生成后运行的 gradle 脚本:

task runScript (dependsOn: 'bootJar', type: JavaExec) {
    main = 'postpackage'
    classpath = sourceSets.main.runtimeClasspath
}

到目前为止,gradle 脚本只是打印了一条消息:

println "hello world from groovy version ${GroovySystem.version}"

这在我的构建中运行良好。

gradle runScript

任务 :runScript hello world 从 groovy 版本 2.4.15

我想要的是这样的:

println "hello world generated jar file name is ${jarFileName}"

我要做的是传入 SpringBoot 生成的 jar 名称,或者 build/libs/my-service-0.1.1.jar 中的 jar 名称或任何它。

所以它会打印:

hello world生成的jar文件名为my-service-0.1.1.jar

我该怎么做?

这是我尝试过的:

postpackage.groovy:

println "hello world from groovy version ${GroovySystem.version}"

println "hello world from groovy version $bootJar.archiveName"

build.gradle:

task runScript (dependsOn: 'bootJar', type: JavaExec) {
    main = 'postpackage'
    classpath = sourceSets.main.runtimeClasspath
}

这是错误:

任务:运行脚本失败 来自 groovy 版本 2.4.15 的 hello world 线程“main”中的异常 groovy.lang.MissingPropertyException:没有这样的属性:bootJar for 类:邮包 在 org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:66)

【问题讨论】:

  • 你可以像bootJar{ archiveName = project.property('theFileName') }一样配置bootJar任务,然后使用命令行参数:./gradlew -PtheFileName="the-target-name.jar"
  • 我添加的正是我要查找的内容
  • 然后试试println "hello world generated jar file name is $bootJar.archiveName"
  • Exception in thread "main" groovy.lang.MissingPropertyException: No such property: bootJar for class: postpackage
  • 查看编辑 - 我使用了 $bootJar.archiveName${$bootJar.archiveName}

标签: java gradle groovy


【解决方案1】:

您应该能够将 bootjar 引用为“jar”。

打印语句示例:

println "hello world from groovy version ${jar.archiveName}"

【讨论】:

    【解决方案2】:

    答案:

    像这样通过 build.gradle 传递参数:

    task runScript (dependsOn: 'bootJar', type: JavaExec) {
        main = 'postpackage'
        classpath = sourceSets.main.runtimeClasspath
        args "${bootJar.archiveName}"
    }
    

    像这样在脚本中引用它:

    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

    来自 groovy 版本 my-service-0.1.1.jar 的你好世界

    BUILD SUCCESSFUL in 2s
    5 actionable tasks: 1 executed, 4 up-to-date
    12:36:00 PM: Task execution finished 'runScript'.
    

    【讨论】:

      猜你喜欢
      • 2017-05-24
      • 2018-05-27
      • 1970-01-01
      • 2019-10-03
      • 2021-06-11
      • 1970-01-01
      • 2019-04-06
      • 2021-09-09
      • 1970-01-01
      相关资源
      最近更新 更多