2010-03-23 3 views
7

Мне очень неприятно делать веб-разработку с помощью Maven & Jetty с помощью Eclipse, сравните с тем, что я сделал с помощью Visual Studio. Каждый раз, когда я делаю изменения, даже незначительные изменения в моем файле вида (например, .jsp), я должен повторно упаковать всю сеть -> ждать, пока причал не перезагрузит все, прежде чем я смогу увидеть изменение.Веб-разработка с Jetty & Maven

Есть ли лучший способ сделать это, что-то вроде автоматического плагина, который отобрал бы эти измененные файлы и развернул измененные файлы на веб-сервер?

+0

Я просто наткнулся на это сообщение, я должен упомянуть, что одно коммерческое решение этой проблемы - http://www.zeroturnaround.com/jrebel/. – Andy

ответ

13

То, как вы используете Maven, Jetty (и Eclipse) вместе, неясно, но поскольку вопрос отмечен Maven, я расскажу о пути Maven. С проектом типа war, один простой способ получить webapp и работает - использовать Maven Jetty Plugin. Чтобы сделать это, просто добавьте следующий фрагмент кода в ваш POM:

<project> 
    ... 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.mortbay.jetty</groupId> 
     <artifactId>maven-jetty-plugin</artifactId> 
     <version>6.1.10</version> 
     </plugin> 
     ... 
    </plugins> 
    ... 
    </build> 
    ... 
</project> 

С помощью этой установки, работают mvn jetty:run начнет причал контейнер с приложением развернутым. Любое изменение в представлении приведет к перекомпиляции JSP по запросу. И настроить причал плагина также следить за изменения кода Java, вы должны добавить опцию scanIntervalSeconds:

scanIntervalSecondsфакультативного. Пауза в секундах между зачистками webapp для проверки изменений и автоматического горячего повторного развертывания, если они обнаружены. По умолчанию это 0, что отключает сканирование горячего развертывания. Это число больше 0.

Итак, конфигурация может выглядеть следующим образом:

<project> 
    ... 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.mortbay.jetty</groupId> 
     <artifactId>maven-jetty-plugin</artifactId> 
     <version>6.1.10</version> 
     <configuration> 
      <scanIntervalSeconds>1</scanIntervalSeconds> 
     </configuration> 
     </plugin> 
     ... 
    </plugins> 
    ... 
    </build> 
    ... 
</project> 

И если вы хотите, чтобы иметь возможность подключения удаленного отладчика, посмотреть на these instructions.

Вот как я всегда использовал Jetty с Maven и Eclipse, и я всегда был доволен этой настройкой. Я никогда не использовал адаптер Jetty для WTP, предыдущая настройка просто непобедима.

+0

Хм, звучит интересно. На самом деле, я думал о разделенном плагине, что может повторно вызвать фазу maven (например, 'package') в ответ на изменения файла. ScanIntervalSeconds - это классные варианты. Но как насчет другого плагина, который также запускает другую версию причала, например, Google App Engine (например, maven-gae-plugin), которая не предлагает этот вариант? –

+0

@Phuong К сожалению, у меня нет никакого опыта с плагином gae, поэтому я не могу много говорить об этом. –

+0

Я нахожу этот плагин FileSync eclipse: http://andrei.gmxhome.de/filesync/index.html, который можно использовать для копирования измененных файлов в развернутую папку. Я пытаюсь сделать это прямо сейчас, выглядит многообещающим, поскольку это не будет зависеть от того, что может предложить maven-плагин. –

0

Не использовали Jetty с Eclipse, но если вы используете Tomcat (и я уверен, что Jetty тоже будет работать) с WTP и плагином m2eclipse, Eclipse будет создавать и публиковать ваше веб-приложение каждый раз, когда ресурс будет сохранен.

  1. Создайте (или используйте существующий) проект Maven с упаковкой 'war'.

  2. В представлении «серверы» Eclipse щелкните правой кнопкой мыши и настройте сервер.

  3. Щелкните правой кнопкой мыши на настроенном сервере и выберите «Добавить/Удалить проекты» и выберите свой проект.

  4. Нажмите на зеленый треугольник в окне просмотра серверов, чтобы запустить сервер.

Теперь Eclipse должен автоматически создавать и публиковать ваше веб-приложение каждый раз, когда вы вносите изменения. Обратите внимание: у вас должен быть плагин m2eclipse И плагин интеграции m2eclipse WTP для этого.

+0

@Will: В проекте maven настройки, хранящиеся в side pom.xml, будут использоваться для запуска сервера (например, через порт вызова mvn). Интересно, возможно ли это с вашей стороны? –

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