Просмотр точных команд Java, выданных SBT

Я пытаюсь интегрировать jrebel с проектом SBT. Следующая запись находится в файле build.scala:

javaOptions ++= Seq("-javaagent:/path/to/jrebel.jar", "-Drebel.log=true", "-Drebel.log.file=/path/to/jrebel.log")

Однако я не вижу никакого вывода Jrebel при запуске SBT (или, если на то пошло, при обновлении файлов), поэтому я хотел бы знать, есть ли команда/переключатель SBT, который можно использовать для отображения точных команд Java что SBT выдает? (может быть, это разница в формате версий? Я использую SBT версии 0.12.2)


person mjk    schedule 10.05.2013    source источник


Ответы (1)


Ты сделал что-то странное.

Если вы хотите добавить jrebel в SBT, вы должны добавить параметр javaagent в свою команду, которая вызывает sbt-launch.jar. Также не забудьте файл свойств. ??? Ваш Build.scala такой огромный? Невероятный.

Если вы хотите добавить jrebel в приложение Scala, тогда SBT вообще не подходит. Просто запустите приложение где-нибудь, и оно перезагрузит перекомпилированные классы. Вам нужно только указать, где находятся скомпилированные файлы классов. Затем используйте sbt > ~package-bin. Это как maven, ant или любая другая система сборки.

IMHO javaOptions затрагивает только конкретные задачи, которые разветвляют jvm - вроде компиляции, тестов и т.п.

person Ezhik    schedule 26.05.2013
comment
Не будучи все знакомым с SBT, не могли бы вы сказать мне, что вы имеете в виду под файлом свойств. (Кроме того, я помещаю все настройки сборки/тестирования в build.scala, а не разбрасываю его по другим файлам. Вероятно, это не типичная стратегия, но она сохраняет все централизованно, и лично мне легче вносить логические корректировки. .) - person mjk; 29.05.2013
comment
Я имею в виду, что вы должны добавить файл relay.xml с dir=/path/to/your/compiled/class/files в jar/war/независимо. JRebel только перезагружает файлы. СБТ только строить. Существует только связь между двумя разными процессами - файл изменяется в вашем хранилище, нет общих настроек, нет общих опций, нет общей среды выполнения. И это работает хорошо. - person Ezhik; 29.05.2013
comment
Понятно. Ваше сообщение заставило меня взглянуть на сценарий sbt и убедиться, что это действительно проблема. Я использовал общий сценарий запуска, в то время как сценарий с фреймворком (скалатра) использовал модифицированную версию для запуска и запуска JRebel. Все хорошо, спасибо. Я до сих пор не понимаю, почему Jrebel не работает при запуске из WITHIN sbt, как это пыталась сделать моя первоначальная установка. Похоже, что SBT запускает JAVA для создания службы контейнеров — что, похоже, и есть основная цель установки параметра javaOptions, да? Спасибо еще раз. - person mjk; 29.05.2013
comment
Вы видели github.com/scalatra/scalatra-sbt? Вы используете плагин? Как вы выполняете свою задачу? причал? Я думаю, что это будет легко исследовать с помощью SBT или исходного кода плагина. - person Ezhik; 29.05.2013
comment
Я прочитал исходный код xsbt-web-plugin и подозреваю, что Jetty и SBT используют один и тот же экземпляр JVM. Если это так, вы должны добавить javaagent в свой процесс java, который запускает sbt-launch.jar. - person Ezhik; 29.05.2013
comment
Я видел это... пробовал... не сработало. Моя проблема заключалась в том, что у меня был настроенный сценарий запуска sbt, который был универсальным по своей природе. После того, как я изменил его и указал путь, моя версия работала вместо любого скрипта, специфичного для проекта, поэтому даже упомянутый вами шаблон проекта не работал должным образом. (Я предполагал, что интеграция Jrebel происходит из настроек конфигурации сборки, а не из самого сценария запуска.) - person mjk; 29.05.2013
comment
Я подозреваю, что единственным решением было бы добавить «logLevel := Level.Debug» в ваш build.sbt и выполнить поиск фактического файла rein.xml с помощью пути к классам. Эта ситуация абсолютно специфична для вашей среды. - person Ezhik; 29.05.2013
comment
Я видел этот плагин xsbt и собирался покопаться и посмотреть, как они это делают. Я предполагаю, что вы правы - это то, что повторила техническая поддержка Jrebel, когда я говорил с ними об интеграции sbt. Хотя часть меня все еще думает, что javaOptions будет работать, если правильно настроить/использовать. - person mjk; 29.05.2013
comment
Я не знаю ни версию вашего плагина, ни его исходное местоположение. Посмотрите, например, на github.com/ JamesEarlDouglas/xsbt-web-plugin/blob/master/src/ Используется загрузчик классов и нет rein.xml. Пожалуйста, используйте поиск по коду GitHub. Вы легко найдете любую подходящую информацию. - person Ezhik; 29.05.2013