当前位置: 首页 > 知识库问答 >
问题:

将Spring Boot jar名称传递给Gradle Groovy脚本

东方弘壮
2023-03-14

我有一个在生成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

任务:运行脚本你好世界从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。罐子

我该怎么做?

以下是我尝试的:

后包装。非常棒:

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
}

以下是错误:

任务: runScript失败你好世界从groovy版本2.4.15异常在线程"main"groovy.lang.失踪的属性异常:没有这样的属性: bootJar类: postPackatorg.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:66)

共有2个答案

宋经业
2023-03-14

答复:

通过构建传递参数。格雷德尔是这样说的:

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最新版本:groovy 2.4.15版的runScript hello world

来自groovy版本my-service-0.1.1的hello world。罐子

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

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

打印声明的示例:

println "hello world from groovy version ${jar.archiveName}"
 类似资料:
  • 问题内容: 我有一个名为的MySQL脚本文件,其中包含: 我在MySQL控制台中,如何将参数传递给脚本?这不会转发变量: 问题答案: 您可以使用用户变量来实现您描述的行为。在将变量用作模式标识符而不是数据值时,必须使用准备好的语句,以便可以动态组成查询。 : 调用为

  • 问题内容: 我刚开始学习groovy,我想将svnSourcePath和svnDestPath传递给svn copy命令中的shell脚本。但是网址未呈现。 输出量 问题答案: 在变量周围添加了单引号和加operator(’+ variable +’)。现在正在工作

  • 我正在尝试从使用自由式詹金斯构建切换到管道项目。 我喜欢它的许多方面,但我希望我可以使用多分支管道,因为它更适合我们公司,但目前这不是一个选择。 我们目前所做的是创建一个名为

  • 根据http://wiki.apache.org/jmeter/JMeterFAQ我应该能够在jmeter Gui中指定jmeter测试计划的用户/线程数,如下所示: 其中defaultvalue可以是1,2,3,无论什么。。。 当我尝试这样做时,我的测试甚至没有开始。 有什么提示吗? 谢谢

  • 问题内容: 如果我有 我如何在内部找出现在由表示的变量称为? 问题答案: 这是不可能的。即使是按引用传递也不会帮助您。您必须将名称作为第二个参数传递。 但是,您肯定要问的 不是 解决问题的好方法。

  • 问题内容: 我从Jenkins触发了一个shell脚本,该脚本获取日期并将其导出为环境(Linux)变量$ DATE。我需要在同一詹金斯工作中使用此$ DATE。我做了工作作为参数构建。创建一个字符串参数作为DATE值,如DATE = $ DATE。但这是行不通的。 请建议! 问题答案: 您提到要在外壳程序脚本中导出环境变量,该脚本可能是通过“执行外壳程序”步骤启动的。 问题是,一旦完成外壳程序步