Возобновление из первой части
Часть № 1
Мы только что определили наш родительский пом. Специальный тип pom, который в конечном итоге определяет библиотеки, которые будет использовать наше приложение. Он также настраивает все инструменты maven, используемые для упаковки каждого модуля нашего приложения. Вы можете посмотреть пример кода части -1 здесь .
Поэтому до сих пор в каталоге, где мы будем разрабатывать наше приложение, у нас есть одна папка с именем sample-parent, и в этом каталоге находится файл pom.xml . Наш родительский пом!
Как мы видим в разделе модулей , мы определили строительные блоки нашего приложения.
- Образец уха
- образец-веб
- Sample-услуги
- Образец-домен
Нам нужно создать связанные модули maven и добавить отдельные файлы pom.xml для каждого из них.
Определение военного модуля
В папке sample-parent мы создаем подпапку с именем sample-web и добавляем файл pom.xml. (некоторые люди делают это на одном уровне).
1
2
3
4
5
6
7
8
9
|
< project xmlns = "http://maven.apache.org/POM/4.0.0" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" > < modelVersion >4.0.0</ modelVersion > < parent > < groupId >gr.javapapo</ groupId > < artifactId >sample-parent</ artifactId > < version >0.0.1-SNAPSHOT</ version > </ parent > < artifactId >sample-web</ artifactId > </ project > |
Но это просто ничто, нам нужно быть более точным в том, что этот pom поможет нам построить, поэтому нам нужно определить тип упаковки, имя модуля (для этой войны) и любые зависимости.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
|
... < artifactId >sample-web</ artifactId > < packaging >war</ packaging > < build > < finalName >${project.artifactId}</ finalName > </ build > < dependencies > < dependency > < groupId >javax</ groupId > < artifactId >javaee-api</ artifactId > < scope >provided</ scope > </ dependency > </ dependencies > </ project > |
Если вы используете IDE (например, Eclipse ), которая поддерживает Maven, она автоматически обнаружит изменения в содержимом вашего pom и автоматически создаст для вас папки, соответствующие упаковке Maven War. Это создаст для вас следующую структуру. Конечно, вы можете сделать это самостоятельно, но это удобно!
образец-веб
- ЦСИ
- главный
- Java (добавьте свой код Java здесь)
- webapp (это место, где находится WEB-INF \ web.xml)
- ресурсы (ресурсы, как свойства)
- контрольная работа
- Ява
- Ресурсы
- главный
В подпапке webapp я уже предварительно создал файл \ WEB-INF \ web.xml. Я мог бы пропустить эту часть, потому что плагин maven может сделать это для нас, но просто чтобы показать, что есть случаи, когда вы хотите создать его самостоятельно и любые пользовательские записи
Если вам интересно, что «положить» в пустой файл Servlet 3.1 web.xml, посмотрите здесь или загрузите код для этого поста. Я также добавил в подпапку java простого пакета очень простой сервлет, который будет включен в наше приложение. Всего несколько строк кода. Опять же, вы можете скачать весь код по соответствующей ссылке git (bitbucket) в конце поста.
Итак, мы добавили всего несколько строк в наш pom-файл военного модуля, а затем, если у нас есть IDE, волшебным образом инструмент создал для нас очень специфическую структуру папок. Мы «следовали» за этим макетом и добавили очень простой Java-класс сервлета и небольшой xml-дескриптор. Какова реальная точка зрения здесь.
Что ж, отличительной чертой maven является то, что некоторые вещи, которые нужно построить нашему модулю War, уже определены и настроены в «специальном» родительском модуле. Но что это за вещи, и как Maven собирается их использовать? Как мы уже разработали, Maven это все о конвенциях. Вы ставите правильные вещи «правильным» образом, и тогда это делает всю работу за вас.
Поэтому, когда maven сканирует эту военную упаковку, ей нужно будет
- скомпилировать наш Java-класс, который является сервлетом
- и упаковать все в папке sample-web в файл war + любые зависимости.
Кто собирается делать все эти вещи, так как мы не добавили что-то особенное в нашу военную помпу (кроме одной библиотеки зависимостей). Ну это конфигурация или наш родительский пом (см. Предыдущий пост).
Maven-compiler-plugin будет «вызываться» для компиляции наших исходников, и поскольку мы определили, что упаковка нашего модуля maven — «war», то maven-war-plugin будет вызываться для упаковки всего для нам, создать соответствующие дескрипторы.
Таким образом, в случае, когда наше приложение может иметь несколько модулей war или jar, если у нас есть родительский pom, и мы в одном центральном месте определили плагины и базовую конфигурацию, тогда нам НЕ нужно переопределять его полностью или по-нашему. война / банку пом
Только в случае, если одна из войн (ов) или фляг (ов) нуждается в особой обработке (например, упаковываете что-то дополнительное или имеет специальную компоновку), тогда в разделе сборки мы можем переопределить плагин и перезаписать или добавить некоторые дополнительные поведение. Но это не наш случай. Мы хотим, чтобы наши плагины были определены один раз и имели общую конфигурацию, которая будет « наследоваться » всеми модулями нашего приложения, которые будут его использовать.
Используя подсказку выше, вы можете поэкспериментировать и попробовать создать модуль sample-services, который мы «определили» выше, или дождаться третьей части, где мы быстро рассмотрим остальные конкретные модули.
Вы можете найти код для этого поста здесь . (тег post2)
Ресурсы
Ссылка: | Проект Java EE7 и Maven для новичков — часть 2 — определение простой войны за наше приложение от нашего партнера JCG Париса Апостолопулоса из блога журнала Papo . |