Деплой веб-приложения на Tomcat в IntelliJ IDEA Community Edition

English version 

Это краткое руководство поможет начинающим разработчикам Java EE.

IntelliJ IDEA - отличная IDE для Java, однако ее бесплатная версия Community Edition несколько ограничена в разработке веб-приложений и Java EE в целом. В Community версии очень легко разрабатывать desktop приложения, но как только становится необходимо разработать веб-приложение с Java EE, ты вдруг обнаруживаешь, что в Community нет никакой поддержки ни апп серверов (JBoss, GlassFish), ни даже сервлет контейнеров (Tomcat).

В этом руководстве я покажу, как обойти эту проблему (без установки довольно дорогой или крякнутой Ultimate Edition) путем интеграции IntelliJ IDEA Community Edition с Tomcat (через Maven) для разработки веб-приложений с сервлетами.

Начнем с того, что создадим наш проект, щелкнув на пункте New -> Project в верхнем меню.
В левой части выбираем Maven, а в правой архетип maven-archetype-webapp (рис. 1):

Рис. 1. Создайте проект Maven.

На следующих скриншотах видно, как задавать group id, artifact id, имя проекта и папку для него. Group id - уникальный идентификатор твоего проекта, обычно это имя java пакета в соответствии с Java code conventions. Artifact id  - имя JAR файла который заносится в репозиторий Maven, в данном случае mywebapp. Здесь можно подробнее почитать как выбрать group id и artifact id.


После того как проект создан, появится стандартная структура папок необходимая для веб-приложения: папка WEB-INF, файл web.xml и даже главная страница(рис. 2).

Рис. 2. Стандартная структура папок.
 
 Maven уже сможет собрать такой проект, но до сих пор некуда класть исходный код Java! Это нам и надо исправить (рис. 3). Создаем папку java по адресу My web app/src/main/ и метим ее как "source root". В этой папке хранится код сервлетов.

Рис. 3. Создаем папку для исходников.

Создадим для примера сервлет HelloServlet.java (рис. 4) и вставляем туда следующий код:



Рис. 4. Создаем сервлет.

Код правильный, но почему он подчеркивается красным как ошибка? Надо добавить библиотеки Java EE при помощи Maven. Открываем pom.xml и приводим его к такому виду:



Изменения в pom.xml.

Хотя это и не требуется для того чтобы собрать проект, мы также добавили в pom.xml директивы которые вытягивают с серверов Maven плагин tomcat7-maven. Теперь воспользуемся этим плагином: создаем новую Run/Debug Configuration типа Maven, называем ее как угодно, в поле Command line пишем tomcat7:run, и наконец добавляем clean в список целей Maven перед запуском (рис. 5):

Рис. 5. Создаем конфигурацию запуска.

Поздравляю! Теперь у тебя есть рабочее веб-приложение Java EE с конфигурацией запуска которая его собирает, делает WAR архив и деплоит его в Tomcat:


Теперь можно просто нажать Shift+F10 (или кнопку Run на панели вверху) и увидеть в браузере страницу index.jsp по адресу http://localhost:8888 (ссылка будет в окне вывода информации о сборке):


JSP есть, а что насчет сервлетов? Чтобы обратиться к сервлету, надо дать Tomcat понять, где его искать и на какой адрес замапить. Для этого поменяем 2 файла: src/main/webapp/WEB_INF/web.xml и src/main/webapp/index.jsp :





Изменения в web.xml и index.jsp.

Снова запускаем проект и вуаля! Теперь из главной страницы можно перейти к сервлету и убедиться что он работает:


Теперь твоя скромная IntelliJ IDEA Community Edition стала на шаг ближе к полной версии - она автоматически собирает проект, делает WAR архив и деплоит его в Tomcat.

Скачать готовый проект IntelliJ IDEA

Как автоматически запускать браузер после деплоя

Это продолжение статьи предназначается для тех людей, которым недостаточно автоматизации в приведенном решении деплоя и теста веб приложений. "Ну да, я жму Run и запускается Tomcat но после этого надо самому жать ссылку и чистить кеш браузера?" Давайте исправим это и сделаем так, чтобы при запуске приложения оно открывалось в браузере:
  1. Заменяем текст между тегами <plugins> </plugins> в pom.xml:



  2. Идем в Run/Debug Configurations и меняем параметр Command line на verify :


  3. Создаем файл test.bat в корне проекта с таким содержимым:

N.B. Для того чтобы не чистить кеш после каждого запуска я заменил запуск стандартного браузера на Chrome в режиме инкогнито:
Если не чистить кеш в обычном режиме браузера, он будет хранить старые версии скриптов которые ты подключаешь в страницах, что может привести ко многим часам чесания головы.
Вот и все! Можно запускать проект и после деплоя он откроется в браузере:


Чтобы выключить Tomcat можно либо нажать Ввод в окне "Run" (правильный способ) или нажать кнопку "Стоп" на верхней панели (экстренное завершение).


Comments

  1. Огромное спасибо! Простой и главное работающий пример для простого приложения, легко ставится и юзается!

    ReplyDelete

Post a Comment