在gradle的应用程序插件生成的启动脚本中,如何将程序名称传递给应用程序?

Lau*_*ves 6 java gradle

执行gradle这个应用程序插件的installDist任务创建一个目录,其中包含包装脚本,和.运行这些脚本中的任何一个都会运行应用程序,并且传递给这些脚本的参数将传递给底层应用程序.build/install/my-application-name/binmy-application-namemy-application-name.bat

在UNIX shell脚本中,您可以访问用于执行程序的名称$0.实际上,gradle生成的启动脚本的UNIX版本使用$0了几次.

如何配置gradle应用程序插件,以便这些脚本可以将$0(以及Windows上等效的Windows)的值传递到底层应用程序中,可能作为Java系统属性?

jih*_*hor 5

由于用于获取正在运行的脚本名称的参数在Linux($0)和Windows(%0)中的引用不同,因此生成自定义脚本的最直接方法是为各个启动脚本生成器使用单独的自定义模板:

startScripts {
  unixStartScriptGenerator.template = resources.text.fromFile('unixStartScript.txt')
  windowsStartScriptGenerator.template = resources.text.fromFile('windowsStartScript.txt')
}
Run Code Online (Sandbox Code Playgroud)

默认模板易于获取,例如 unixStartScriptGenerator.template.asString()

可在此处找到有关自定义启动脚本的文档。