2016-08-12 3 views
2

После долгих поисков, в течение которых я нашел, как включить во время выполнения арг в моем файле build.gradle для запуска исполняемой баночки изGradle, и даже как включить аргументы JVM, мне не удалось найти ответ на этот вопрос:Включить во время выполнения арг в Gradle исполняемого файла банка

У меня есть приложение «myapp.jar», которое принимает аргумент «--demo-mode». Я использую плагины приложений distTar и distZip, чтобы сделать это в исполняемом банке со своим собственным скриптом (поэтому я могу запустить его непосредственно как «./myapp.jar»).

Мне нужно добавить эту банку в /etc/init.d, что я сделал, просто сопоставив файл jar в каталоге init.d (и запустив update-rc.d).

Теперь приложение работает отлично, без аргумента -demo-mode, когда я загружаю систему, как я хочу (когда не используется демонстрационный режим).

Я также могу зайти в домашний каталог владельца приложения, установить RUN_ARGS = "- demo-mode" и запустить «./myapp.jar», и он запустится в демонстрационном режиме. Круто. (заглядывая в банку по сценарию сборки, созданного по умолчанию, с градиентом, показывает, что $ RUN_ARGS включен после имени файла jar в команде, которая фактически выполняет банку)

Что я могу не делать, это иметь/etc/init.d запустите файл jar с использованием встроенного сценария запуска Gradle и с аргументом -demo-mode.

Я знаю, что могу написать собственный сценарий запуска для /etc/init.d и включить аргумент «вручную» (что-то вроде «su-user -c» java -jar /home/user/myapp.jar - демо-режим ")

Я также мог разобрать .jar файл и вручную взломать сценарий запуска ...

Я даже пытался экспортировать RUN_ARGS в .bashrc фляги-владельце, надеясь, что он получил бы взял, когда script ran ... (нет радости)

Но есть ли способ настроить Gradle (или использовать какой-либо другой метод), чтобы включенный сценарий запуска также включал аргумент (ы) командной строки, который я хотите перейти к моей банке?

+0

Какую версию Gradle вы используете, или это имеет значение? –

+0

версии 2.14, и я понятия не имею, важно ли это :) –

ответ

0

На самом деле задачи плагина приложения, installDist, distZip или distTar создадут сценарии запуска, {архив установки или распространения}/bin /.

Это специфичные для операционной системы оболочки, которые запускают приложение наконец. Вы можете добавить свои аргументы.

... 
exec "\$JAVACMD" "\${JVM_OPTS[@]}" -classpath "\$CLASSPATH" ${mainClassName} "\[email protected]" 

Обратите внимание, что скрипт передаст весь свой аргумент базовому $ {mainClassName}.

Смежные вопросы