Веб-разработка с Jetty & Maven

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

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


person Phương Nguyễn    schedule 23.03.2010    source источник
comment
Я только что наткнулся на этот пост, я должен упомянуть, что одним из коммерческих решений этой проблемы является zeroturnaround.com/jrebel< /а>.   -  person Andy    schedule 15.11.2010


Ответы (2)


То, как вы используете Maven, Jetty (и Eclipse) вместе, неясно, но, поскольку вопрос помечен как Maven, я расскажу о пути Maven. Для проекта типа war одним из простых способов запустить веб-приложение является использование Плагин Maven Jetty. Для этого просто добавьте в 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 по запросу. А чтобы настроить подключаемый модуль jetty для отслеживания изменений кода Java, вам нужно добавить параметр scanIntervalSeconds:

scanIntervalSeconds Необязательно. Пауза в секундах между проверками веб-приложения для проверки изменений и автоматического горячего повторного развертывания, если таковые обнаружены. По умолчанию это значение равно 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>

И если вы хотите иметь возможность подключить удаленный отладчик, посмотрите эти инструкции.

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

person Pascal Thivent    schedule 23.03.2010
comment
Хм, звучит интересно. На самом деле, я думал об отдельном плагине, который может повторно вызывать фазу maven (например, package) в ответ на изменения файла. ScanIntervalSeconds — классные опции. Но как насчет другого плагина, который также запускает другую версию причала, такого как Google App Engine (например, maven-gae-plugin), который не предлагает эту опцию? - person Phương Nguyễn; 23.03.2010
comment
@Phuong К сожалению, у меня нет опыта работы с плагином gae, поэтому я не могу много о нем сказать. - person Pascal Thivent; 24.03.2010
comment
Я нашел этот плагин FileSync eclipse: andrei.gmxhome.de/filesync/index.html который можно использовать для копирования измененных файлов в развернутую папку. Я пробую это прямо сейчас, выглядит многообещающе, поскольку это не будет зависеть от того, что может предложить плагин maven. - person Phương Nguyễn; 24.03.2010
comment
Я нахожу FileSync чрезвычайно полезным и очень доволен этим. Тем не менее, ваше решение, похоже, подходит для веб-разработки с использованием Jetty & Maven. Я думаю, что это заслуживает быть ответом. Спасибо. - person Phương Nguyễn; 27.03.2010
comment
@Phuong Рад, что вы нашли рабочее решение. И спасибо, что приняли этот ответ. - person Pascal Thivent; 27.03.2010

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

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

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

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

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

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

person Will    schedule 23.03.2010
comment
@Will: в проекте maven настройки, хранящиеся в файле pom.xml, будут использоваться для запуска сервера (например, порт с помощью вызова цели mvn). Интересно, возможно ли это с вашим способом? - person Phương Nguyễn; 24.03.2010