2015-08-20 2 views
1

В настоящее время я использую export JAVA_OPTS ... в командной строке, но, похоже, есть другие возможности, используя build.sbt или внешний файл свойств.Каков рекомендуемый способ установки параметров JVM для исполняемых файлов, созданных с помощью sbt-native-packager?

Я нашел несколько релевантных вопросов github here, here и here, но многие варианты сбивают с толку. Есть ли рекомендуемый подход?

ответ

2

подхода вы принимаете для настройки параметров виртуальной машины Java в основном зависит от вашего случая использования:

опции Inject каждый раз

Если вы хотите, чтобы иметь возможность указать опции каждый раз при запуске вашей службы, два механизма - это переменные среды и параметры командной строки. Который вы используете, в основном, это вопрос вкуса или удобства (но параметры командной строки переопределяют параметры переменных среды).

  • Переменные среды

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

  • Командная строка

    Вы можете вводить значения, добавляя параметры командной строки в одном из двух форматов:

    • -Dkey=val

      Передает среды свойство Java в Java двоичном.

    • -J-X

      Проходы любой флаг -X к Java двоичном, зачистки ведущего -J.

INJECT опции из файла, который может быть изменен

Если вы хотите, чтобы в конечном итоге с файлом в файловой системе, которая может быть изменена после того, как время установки, вы хотите использовать sbt-native-packager способность считывать из файла .ini для инициализации значения по умолчанию для параметров Java. Подробности этого можно увидеть на http://www.scala-sbt.org/sbt-native-packager/archetypes/cheatsheet.html#file-application-ini-or-etc-default

Следуя инструкциям, и в зависимости от архетипа, который вы используете, вы будете в конечном итоге с файлом в любом /etc/default, application.ini или другое пользовательское имя, которое будет считываться чтобы добавить настройки.

Каждая строка этого файла обрабатывается так, как если бы они были дополнительными параметрами запуска, поэтому все еще действуют прежние правила, упомянутые ранее; например -X флаги должны быть написаны так, как если бы они были -J-X.

опция Inject & кода, который никогда не должен быть изменен

Вы можете жёстко изменения непосредственно в скрипт, который выполняется, чтобы начать свой двоичный файл, используя SBT установки bashScriptExtraDefines и после подробности в http://www.scala-sbt.org/sbt-native-packager/archetypes/cheatsheet.html#extra-defines

Это самый гибкий вариант с точки зрения того, что возможно (вы можете написать любой действительный код bash, и это добавляется к стартовому скрипту). Но он также менее гибкий, поскольку он не модифицируется впоследствии; любые необязательные вычисления должны быть описаны в терминах языка сценариев bash.

+0

Существует также возможность добавить jvmOption через 'jvmOptions в Universal', который генерирует' application.ini' – Muki