IntelliJ, JRebel, Maven и приложение JEE 6

Моя установка

  • IDE: IntelliJ
  • Применение: JEE6 с модулем EAR и WAR
  • Сборка: Мейвен
  • Замена горячего кода: JRebel
  • Сервер приложений: Glassfish 3.1

Я настроил приложение в IntelliJ таким образом, чтобы было развернуто ухо. Целевая папка уха выглядит так: target/classes/ target/appEar/appWeb-version-Snapshot.war/ target/appEar/lib/ target/appEar/META-INF.

В конфигурации по умолчанию JRebel прослушивает изменения в папке class/. Когда я что-то меняю в веб-модуле и создаю его, классы обновляются только в appWeb/target/classes/, но не в appEar/target/appEar/appWeb-version-Snapshot.war/.

Если я хочу обновить эти классы, мне нужно выбрать «Построить артефакты» в IntelliJ после создания проекта.

Подводя итог, я должен сделать следующие шаги для горячей замены кода:

  1. (один раз) Правильно настройте JRebel.
  2. Сделать проект
  3. Создавайте артефакты

Вся эта процедура кажется мне слишком сложной. Кто-нибудь знает, как правильно настроить IntelliJ/Maven/Glassfish/JEE/JRebel? Я не нашел пример, содержащий все мои инструменты. Я бы хотел, чтобы было только одно действие по замене кода, а не два.


person Soccertrash    schedule 13.09.2016    source источник


Ответы (2)


В настройках артефакта вашего проекта есть флажок «сборка при создании», который всегда будет воссоздавать ваш артефакт при компиляции, если это то, что вы ищете. Однако JRebel должен переназначить, где ваше приложение читает файлы классов и ресурсы на основе файла rein.xml, поэтому вам, вероятно, следует просто переписать файл rein.xml, чтобы искать классы там, где они скомпилированы, а не там, где они заканчиваются после создания артефакта.

person Joonas Vali    schedule 15.09.2016

Зачем вам каждый раз создавать Артефакты?

Ваша война должна содержать файл vanilla.xml, который соответствует классам в папке /target/classes.

Когда вы вносите изменения в указанные классы, ваш сервер знает, что нужно загружать изменения из этих классов.

Таким образом, вам нужно только собрать свой проект, чтобы увидеть изменения, предполагая, что ваш путь к классам rebel.xml указывает на /target/classes.

person Risto Pärnapuu    schedule 13.09.2016
comment
Мне нужно создать артефакты, чтобы IntelliJ скопировал содержимое взорванной войны в ухо/цель/. Оттуда сервер приложений подбирает классы. - person Soccertrash; 13.09.2016
comment
Если ваши изменения не перезагружаются после сборки проекта, возможно, что-то не так с конфигурацией Rebel.xml. Не могли бы вы написать на [email protected] и прикрепить лог jrebel к себе на почту. Как отправлять журналы: manuals.zeroturnaround.com/jrebel/misc/sendinglogs.html - person Risto Pärnapuu; 13.09.2016
comment
JRebel работает нормально. Но сначала мне нужно построить проект, а потом создавать артефакты. Поэтому я предполагаю, что существует более элегантная настройка проекта, которую можно выполнить в IntelliJ для приложения JEE. Более того, он все еще должен работать с maven. - person Soccertrash; 13.09.2016