Может ли мультимодульный проект m2eclipse/WTP получать модули утилиты, внедренные в WEB-INF/классы?

В настоящее время мы используем MyEclipse со встроенной интеграцией Maven4MyEclipse и встроенной поддержкой J2EE-сервера, но хотим конвертировать его в обычное eclipse (специально для Helios), чтобы иметь возможность использовать свою 64-разрядную установку в Windows. (MyEclipse еще не поддерживает 64-разрядную версию в Windows.)

До сих пор у меня есть рабочий прототип затмения Helios с использованием m2eclipse с плагином WTP, который развертывает наше большое веб-приложение для tomcat. Развертывание - это небольшой процессор, но он работает, и приложение запускается.

Что здесь принципиально другое, так это то, как развертываются зависимые проекты. В нашей среде MyEclipse все зависимые проекты были развернуты в папку WEB-INF/classes, поэтому, пока сервер работал, изменение класса Java в среде IDE будет копировать только затронутые файлы на сервер WEB-INF/классы и "горячая замена" класса в JVM и... boom - живое изменение на сервере. GREAT для отладки.

В моем преобразовании helios, однако, все зависимые проекты получают JARed и помещаются в WEB-INF/lib. Это имеет то преимущество, что на самом деле выглядит то, на что похоже наше реальное изображение, построенное на основе maven, но среда разработки сильно обездолена в этом тем, что возможности "горячей" замены полностью утрачены. Здесь, если я изменю java-класс в зависимом проекте, m2eclipse повторно упакует JAR, увидит, что развернутое веб-приложение не синхронизировано и переиздает все приложение. Мало того, что это проблема в том, что все веб-приложение должно цикл (что-то наше откровенно не очень хорошо, учитывая его размер и огромное время инициализации), это также неприятная задержка в затмении, делающая свою публикацию. (Для нашего применения это занимает около минуты или два.)

Итак, мой вопрос заключается в следующем: есть ли способ получить изменения внутри зависимых проектов до "горячей" замены на запущенной JVM и заменить развернутые файлы без этого неприятного штрафа за публикацию? Я предполагаю, что это означает развертывание этих файлов классов в WEB-INF/классах, но не знаю точно, что (a) возможно или (b) действительно необходимо как часть этого решения.

Что делают другие, чтобы решить это? Разрешима ли она?

Спасибо заранее!

Ответы

Ответ 1

Я думаю, что вы ищете решение, описанное в Re: WTP Tomcat hot deploy with m2eclipse:

Если вы включите "Сервисные модули" Без публикации ", то специальная банка добавляется в Tomcat сервер, который позволяет поддерживать Tomcat в WTP для управления" classpath "веб-приложение. Кроме того, утилита проекты не собираются в банки. Вместо этого выходные папки Java проекты коммунальных услуг включены в" classpath "в Интернете приложения, эффективно обслуживающего файлы класса. Если вы отключите автозагрузка для контекста и запустить в режиме отладки, внести изменения в классы могут быть заменены на" горячий" код контекст не нужно перезагружать. я верьте, что это выполнит то, что вы ищут.

Для этого:

  • Перейдите в представление Сервер
  • Дважды щелкните ваш сервер Tomcat, чтобы открыть настройки сервера.
  • В Параметры сервера выберите Подавать модули без публикации.
  • В Публикация выберите параметр Никогда публиковать автоматически