После долгих поисков я нашел, как включить аргументы времени выполнения в файл build.gradle для запуска исполняемого файла jar из gradle и даже как включить Аргументы JVM, мне не удалось найти ответ на этот вопрос:
У меня есть приложение "myapp.jar", которое принимает аргумент "--demo-mode". Я использую плагины distTar и distZip приложения gradle, чтобы превратить это в исполняемый файл 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-mode" )
Я также мог бы разобрать файл jar и вручную взломать сценарий запуска...
Я даже пытался экспортировать RUN_ARGS в .bashrc владельца jar, надеясь, что он будет подхвачен при запуске скрипта... (без радости)
Но есть ли способ настроить Gradle (или использовать какой-либо другой метод), чтобы включенный сценарий запуска также включал аргументы командной строки, которые я хочу передать в свою банку?