【发布时间】:2016-08-12 18:42:02
【问题描述】:
经过大量搜索,在此期间我发现了如何在我的 build.gradle 文件中包含运行时参数以运行可执行 jar from gradle,甚至如何包含 JVM 参数,我找不到这个问题的答案:
我有一个应用程序“myapp.jar”,它接受一个参数“--demo-mode”。我正在使用 gradle 应用程序 distTar 和 distZip 插件将其制作成带有自己脚本的可执行 jar(因此我可以直接将其作为“./myapp.jar”运行)。
我需要将此 jar 添加到 /etc/init.d,我只需将 jar 文件符号链接到 init.d 目录(并运行 update-rc.d)即可完成。
现在,当我启动系统时,应用程序在没有 --demo-mode 参数的情况下运行得很好,就像我想要的那样(即不使用演示模式时)。
我也可以进入应用程序所有者的主目录,设置 RUN_ARGS="--demo-mode" 并运行 "./myapp.jar",它将以演示模式启动。凉爽的。 (在 jar 中查看默认的 gradle 生成的构建脚本显示 $RUN_ARGS 包含在实际执行 jar 的命令中的 jar 文件名之后)
我似乎不能做的是让 /etc/init.d 启动 jar 文件使用内置的 Gradle 启动脚本并应用 --demo-mode 参数。
我知道我可以为 /etc/init.d 编写自己的启动脚本,并“手动”包含参数(类似于“su - user -c”java -jar /home/user/myapp.jar --demo -模式")
我还可以解构 jar 文件并手动破解启动脚本...
我什至尝试在 jar-owner 的 .bashrc 中导出 RUN_ARGS,希望它会在脚本运行时被拾取...(不高兴)
但是有没有办法配置 Gradle(或使用其他方法),以便包含的启动脚本也包含我想要传递给我的 jar 的命令行参数?
【问题讨论】:
-
您使用的是哪个版本的 Gradle,或者这有关系吗?
-
版本 2.14,我不知道它是否重要:)
标签: java gradle jar executable init.d