2013-05-10 1 views
0

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

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)

ответ

1

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

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

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

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

+0

Не будучи знакомым с SBT, не могли бы вы рассказать мне, что вы имеете в виду в «файле свойств». (Кроме того, я поместил все настройки сборки/теста в build.scala, вместо того, чтобы распространять их среди других файлов. Вероятно, это не типичная стратегия, но она держит все централизованно и лично, мне легче сделать логические настройки .) – mjk

+0

Я имею в виду, что вы должны добавить rebel.xml с dir =/path/to/your/compiled/class/files в jar/war/whatever. JRebel только перезагружает файлы. SBT только строить. Существует только связь между двумя разными процессами: файл изменяется в вашем хранилище, не имеет общих настроек, отсутствует общий параметр, нет среды совместного использования. И он работает хорошо. – Ezhik

+0

Получил. Ваше сообщение заставило меня взглянуть на скрипт sbt, и это действительно было проблемой. Я использую «общий» сценарий запуска, тогда как тот, у которого есть фреймворк (scalatra), использовал модифицированную версию для запуска JRebel. Все хорошо, спасибо. Я до сих пор не понимаю, почему Jrebel не будет функционировать при запуске из WITHIN sbt - как пыталась моя первоначальная установка. Похоже, что SBT запускает JAVA для создания службы контейнера, которая, кажется, целиком связана с настройкой параметра javaOptions, да? Еще раз спасибо. – mjk

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