Maven + Tomcat ускорение - PullRequest
       25

Maven + Tomcat ускорение

3 голосов
/ 27 апреля 2010

Я пишу веб-приложение с Maven в Eclipse IDE и использую контейнер сервлета Tomcat.

Итак, я запускаю Maven так: mvn clean compile. Разумно, что после этой операции мне нужно перезапустить Tomcat, чтобы он мог заново инициализировать контекст (программа запуска Sysdeo Tomcat очень помогает).

Проблема заключается в выполнении Maven, и каждый раз, когда я выполняю запись, повторное выполнение Tomcat занимает заметное количество времени (например, 10+ секунд для Maven и 20+ секунд для Tomcat, из-за ведения журнала, сопоставлений O / R и т. Д.) это.

Существует ли какое-либо автоматизированное и более быстрое решение для этих операций? На мой взгляд, лучшим решением может быть перемещение перекомпилированных классов только в целевой каталог.

Ответы [ 5 ]

4 голосов
/ 27 апреля 2010

Существует ли какое-либо автоматизированное и более быстрое решение для этих операций? На мой взгляд, лучшим решением может быть перемещение перекомпилированных классов только в целевой каталог.

Ну, вопрос в том, почему вы запускаете clean каждый раз? Инкрементная компиляция уже значительно ускорит процесс.

Обновление: Я согласен с @Carl по поводу Eclipse WTP, который обеспечивает очень хорошую поддержку Tomcat (в настоящее время я не вижу дополнительной ценности плагина Sysdeo). Использование Eclipse WTP для разработки и запуск Maven перед фиксацией изменений для проверки того, что вы не нарушали непрерывную сборку, является очень типичным рабочим процессом. И maven-eclipse-plugin и m2eclipse (две альтернативы интеграции Maven и Eclipse) поддерживают WTP, то есть могут получить ваш проект как динамический проект чем может быть Запуск на сервере .

3 голосов
/ 28 апреля 2010

Возможно, вы захотите взглянуть на JRebel . Он перезагружает ваши классы в работающем коте, поэтому ваши изменения практически мгновенные. Я не использовал это много, но это, кажется, требует хороших комментариев.

3 голосов
/ 27 апреля 2010

Maven делает две вещи: обработку зависимостей и управление сборкой. Обычно я считаю, что управление зависимостями в Maven - это бесполезная трата времени, которая мне обычно не нужна, поэтому я делаю управление сборкой с помощью ant.

По цене вручную настроенного файла сборки, Ant дает вам очень хороший контроль над тем, какие файлы куда и когда отправляются. Если вы копируете недавно скомпилированные классы в каталог WEB-INF/classes и нажимаете web.xml, чтобы запустить перезагрузку, вам не нужно останавливать и перезапускать Tomcat. Это сокращает время моей компиляции / перезагрузки примерно до одной секунды.

Так я предпочитаю работать. Некоторые фанаты Maven будут не согласны с этим.


РЕДАКТИРОВАТЬ: Тем не менее, есть еще один метод, который позволяет мне полностью обойти проблему сборки: я разрабатываю в Eclipse, используя функциональность WTP, которая включена в редакцию Java EE для разработчиков. Когда я делаю изменение кода, я просто нажимаю Ctrl-S , чтобы сохранить измененный файл, и Eclipse автоматически копирует вновь скомпилированный класс в работающий Tomcat, чтобы я мог сразу же обновить свой браузер и увидеть недавно измененный Веб-приложение запущено. Благодаря инкрементной компиляции Eclipse этот метод, вероятно, непобедим с точки зрения времени цикла редактирования / выполнения. Конечно, если вам действительно нужен Maven, то это не альтернатива.

0 голосов
/ 06 мая 2010

В конце концов, я решил это, используя функцию Eclipse, которая называется «Автоматически строить» (флажок «Проект → Автоматически строить»). Каждый раз, когда вы сохраняете ресурс, Eclipse компилирует его и перемещает файл .class в выходную папку.

0 голосов
/ 28 апреля 2010

Существует плагин Maven tomcat, который может вам помочь, вы просто выполните "mvn tomcat: redeploy", и maven скомпилирует исходный код, упакует его и развернет на настроенном tomcat, см. tomcat plugin для получения дополнительной информации. .

...