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

标签 java gradle

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

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

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

最佳答案

由于用于获取正在运行的脚本名称的参数在 Linux($0) 和 Windows(%0) 中的引用方式不同,因此最直接的生成方法自定义脚本将针对各自的start script generators使用单独的自定义模板。 :

startScripts {
  unixStartScriptGenerator.template = resources.text.fromFile('unixStartScript.txt')
  windowsStartScriptGenerator.template = resources.text.fromFile('windowsStartScript.txt')
}

默认模板很容易通过调用获得,例如unixStartScriptGenerator.template.asString()

可以找到有关自定义启动脚本的文档 here .

关于java - 在gradle的应用程序插件生成的启动脚本中,如何将程序名称传递给应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48307027/

相关文章:

android - 在 Android 中启用 Robotium

java - Android Studio 中的电子邮件有多行

java - RESTEasy 客户端 + NoSuchMethodError

java - 更新 gitlab-ci 构建中的 gradle 版本

java - 序言中不允许从 Eclipse 迁移到 Android Studio 错误内容

gradle - 使用Gradle自动增加内部版本号(非Android)

gradle - 如何禁用外部依赖 jar 的 Proguard 设置?

java - java.util.concurrent.CountDownLatch.countDown() 是原子的吗?

java - 如何检测并删除数组中两个以上的重复项?

java - 如何获取 Firebase TIMESTAMP 与当前时间之间的小时数?