JavaRush /Курсы /JSP & Servlets /Архетипы в Maven

Архетипы в Maven

JSP & Servlets
1 уровень , 2 лекция
Открыта

Знакомство с архетипами

Есть еще один способ создать Maven-проект в IDEA — на основе архетипа:

Maven-проект в IDEA

Тут предлагается создать проект на основе одного из существующих архетипов. Что же это за архетипы такие и зачем они нам нужны?

Maven стандартизировал шаблоны проектов — такие шаблоны называются архетипами. Помните стартовую структуру проекта — папки src, java, test и так далее? Так вот эта структура папок задана с помощью архетипа.

Образцы шаблонов есть на официальном сайте Maven. С их помощью можно сгенерировать разные стартовые проекты — простое приложение, плагин, сайт.

Список доступных архетипов можно получить, выполнив в консоли команду: mvn archetype:generate

Популярные архетипы

Самые популярные архетипы — это:

  • maven-archetype-quickstart;
  • maven-archetype-site;
  • maven-archetype-webapp;
  • maven-archetype-j2ee-simple;
  • jpa-maven-archetype;
  • spring-mvc-quickstart.

Если хочешь создать пустой Java-проект, то используй архетип maven-archetype-quickstart. Именно результат его работы ты и видел при создании проекта в IDEA в прошлой лекции.

Если хочешь создать веб-приложение, которое будет работать внутри веб-сервера, отображать HTML-странички и все такое, то можешь смело брать за основу архетип maven-archetype-webapp.

Для создания сайта можно использовать архетип maven-archetype-site. Или даже архетип maven-archetype-site-simple, если предполагается очень простой сайт. Попробуй разные варианты и посмотри, какой тебе больше понравится.

Для работы с Hibernate или JPA можно использовать архетип jpa-maven-archetype.

Ну и наконец для работы со Spring тоже есть специальный архетип — spring-mvc-quickstart. Очень полезен будет именно для новичков. Более подобную информацию по последнему можно найти тут, по ссылке.

Чем хороши архетипы? Они отучают писать проекты с нуля. Никто уже не пишет проекты просто на Java. Современные проекты пишутся на стеке технологий: список из 5-10 фреймворков и пары десятков библиотек — вот современный “язык, на котором я пишу”.

Веб-приложение на Maven

Отдельно хотелось бы остановиться на архетипе maven-archetype-webapp.

Это классическое веб-приложение, написанное на Java. И хотя оно немного устарело после набравшего популярность Spring’а, тебе как новичку, оно будет очень полезно. Что нужно знать об этом архетипе?

Он позволяет собрать простое веб-приложение — результатом сборки будет war-файл. Deploy можно настроить так, чтобы твое веб-приложение сразу добавлялось к Tomcat. И наконец, ты можешь поэкспериментировать с примитивными сервлетами и JSP.

Если ты создашь проект на основе этого архетипа, то получишь такую структуру папок:

Maven-проект в IDEA 2

Из интересного тут несколько вещей:

  • папка webapp;
  • папка WEB-INF;
  • файл web.xml;
  • index.jsp.

Во-первых, тут есть папка webapp (от Web Application), в которой и будут храниться все ресурсы твоего веб-приложения.

Во-вторых, файл web.xml — это дескриптор развертывания веб-приложения. В нем описано как твое веб-приложение должно взаимодействовать с веб-сервером и его клиентами.

В-третьих, тут есть файл index.jsp, который является довольно простой формой сервлета. Он рабочий и ты можешь поэкспериментировать со своим первым JSP-сервлетом, меняя его.

Более подробно обо всем этом мы расскажем в теме посвященной сервлетам и веб-приложениям.

Комментарии (30)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Максим Li Уровень 40
9 сентября 2024
Надо будет попробовать сделать такой сайт, а то всё на php с вордпрессами и джумлами
Денис Уровень 60
2 апреля 2025
Сделал ?
Максим Li Уровень 40
6 апреля 2025
Не, еще нет)
Jotun Уровень 28
14 августа 2024
Почему при создании проекта на основе maven-archetype-webapp получается пустой pom.xml файл? Что я делаю не так и что делать, чтобы генерировался правильный пом-ник? В консоли mvn -v определяет, Apache Maven 3.8.8, Java version 22.0.1 IntelliJ IDEA 2023.2.1 (Community Edition) Build #IC-232.9559.62, built on August 23, 2023 Runtime version: 17.0.8+7-b1000.8 amd64 VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o. Windows 10.0 GC: G1 Young Generation, G1 Old Generation Non-Bundled Plugins: izhangzhihao.rainbow.brackets (2023.3.7) com.hitechrush.javarush (231.1.15) Kotlin: 232-1.9.0-IJ9559.62
Лилит Тоноянц Уровень 51
24 июля 2024
Всем привет! Пожалуйста, помогите, что нужно сделать, чтобы пройти уровень и было отмечено пройдено, если нужно скачать Maven, то прошу напишите, как сделать для макбук
Annamaria Amanalyre Уровень 14 Expert
15 ноября 2023
Хотя бы пару слов о том, что такое сервлеты, было бы здорово услышать - чтобы не отвлекаться далеко от лекций.
Anonymous #3268884 Уровень 24
28 марта 2024
Сервлет - это такая маленькая программка, которая работает на сервере и что-то делает по запросу от клиента. У сервера есть целая куча разных сервлетов. Когда сервер получает запрос, то он определяет, какой сервлет нужно запустить по этому запросу, потом запущенный сервлет что-то делает, а потом сервер отправляет клиенту ту фигню, которую сделал сервлет.
ivan Уровень 40
27 сентября 2023
на самом деле классные милые лекции. удобно повторять пройденное
AlexJavaCore Уровень 19
28 августа 2023
Интересненько
No Name Уровень 48
3 июля 2023
+ лекция в копилке
JavaRusher853 Уровень 36
30 декабря 2024
в лекции копилка
Andrey Zinovich Уровень 30
10 января 2023
В актуальной на данный момент IntelliJ IDEA 2022.3.1 (Ultimate Edition) попробавал создать проект на основе шаблона: org.apache.maven.archetypes:maven-archetype-webapp и получил совсем другую структуру каталогов, отличающуюся от лекционной. C чем связано это различие? Наверное получается что maven-шаблон обновился, а лекционный шаблон уже устарел?
Евгений Уровень 38
20 января 2023
Доброго денёчка. У вас вероятно конфликт версий мавен. Нужно снести все переменные среды, удалить установленные файлы мавена, проверить командой mvn -v в командной строке, что ничего не работает. Потом заново установить актуальную версию, проставить переменные среды и т.п.
8 марта 2023
У меня тоже была такая проблема, помогло поставить старшую JDK(15 на тот момент) при создании Maven проекта
23 декабря 2023
У меня также, снос переменных среды и новая установка не помогли, выбор новейшей версии jdk не помогло. Но на данном этапе(помимо этих лекций про maven ничего не знаю и не делала дополнительно) и не знаю действительно ли так не должно быть.
Макс Дудин Уровень 41
21 ноября 2022
"mvn archetype:generate" ни меня себя фигеть сколько их там.. и каждый для чего-нибудь..
MineJavaAcc Уровень 42
26 сентября 2022
Совершенно непонятно, надо ли это учить или тупо теряем время. Например, если пройти по предлагаемеой в лекции ссылке Spring то видно что репозиторий обновлялся 4 года назад. В программировании это как 15 лет в автостроении. И встает закономерный вопрос - для Spring нужна IDEA как нам тут пишут? Или эта лекция - ненужный legacy который нам никогда не пригодится? Расстраивает такая неизвестность, елси честно - в основных курсах Core и Syntax, Multithreading хотя бы понятно для чего учим.
JelJein Уровень 6
27 сентября 2022
Надо. Нырнула сюда уже работая над проектом в области автоматизации тестирования
Inna Lapina Уровень 1
10 ноября 2022
Базовое понимание maven, которое тут описано - must have в реальной работе. Ничего оно не устарело, ровно так же и сейчас. Spring естественно тоже в IDEA пишется, в IntelliJ все очень удобно и продумано на этот счет, особенно в Ultimate версии.
MineJavaAcc Уровень 42
12 ноября 2022
Спасибо за каменты!