параметры командной строки в родном упаковщике sbt

когда вы упаковываете приложение командной строки в sbt с помощью плагина sbt-native-packager, вы получаете скрипт-оболочку с дополнительными параметрами командной строки, который выглядит примерно так.

  -h | -help         print this message
  -v | -verbose      this runner is chattier
  -d | -debug        set sbt log level to debug
  -no-version-check  Don't run the java version check.
  -mem <integer>     set memory options in MB (default: , which is -Xms1024m -Xmx1024m -XX:MaxPermSize=256m -XX:ReservedCodeCacheSize=128m)
  -jvm-debug <port>  Turn on JVM debugging, open at the given port.

  # java version (default: java from PATH, currently java version "1.7.0_21")
  -java-home <path>         alternate JAVA_HOME

  # jvm options and output control
  JAVA_OPTS          environment variable, if unset uses ""
  -Dkey=val          pass -Dkey=val directly to the java runtime
  -J-X               pass option -X directly to the java runtime
                     (-J is stripped)

  # special option
  --                 To stop parsing built-in commands from the rest of the command-line.
                     e.g.) enabling debug and sending -d as app argument
                     $ ./start-script -d -- -d

Можно ли выборочно отключить некоторые из этих параметров или удалить их все вместе из упакованного приложения?


person rogue-one    schedule 30.05.2016    source источник
comment
Возможно, вы ищете способ настроить шаблон скрипта: scala-sbt.org/sbt-native-packager/archetypes/java_app/   -  person Shyam    schedule 31.05.2016
comment
Спасибо @shyam, я рассмотрю этот вариант.   -  person rogue-one    schedule 01.06.2016


Ответы (3)


Во-первых, нет возможности отключить отдельные параметры командной строки. Однако вы можете сделать несколько других вещей.

  1. Как правильно заметил Шьям, вы можете переопределить стартовый скрипт
  2. Второй вариант — использовать разделитель --. Все, что до этого, будет проанализировано сценарием, все, что после, будет добавлено в качестве командной строки приложения.

Если у вас есть вариант использования, который может представлять интерес для общедоступности, вы можете открыть запрос функции.

привет, Муки

person Muki    schedule 31.05.2016
comment
Спасибо @muki, попробую первый вариант. Я знаю о втором, но это довольно неестественно для распространяемых приложений, где пользователям не нужно знать о существовании двухэтапного разбора командной строки. - person rogue-one; 01.06.2016

Для сценария bash вы можете добавить это в свою конфигурацию sbt:

bashScriptExtraDefines += """set -- -- "$@""""

это эффективно добавляет -- к переданным аргументам командной строки, которые будут использоваться оболочкой. Затем обертка проходит через все после того, как это добавлено --

person Geza Lore    schedule 03.06.2017

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

javaOptions in Universal += "--"

Это должен быть последний параметр Java, чтобы он вводился после того, как вы установили любые пользовательские параметры Java, которые у вас уже могут быть. Ясно, что это довольно хакерский подход, так как -- на самом деле не является параметром Java, но в настоящее время native-packager не проверяет, что это так.

person Pieter Bos    schedule 22.10.2019