Статьи

Проект Java EE7 и Maven для новичков — часть 2 — определение простой войны для нашего приложения

Возобновление из первой части

Часть № 1
Мы только что определили наш родительский пом. Специальный тип pom, который в конечном итоге определяет библиотеки, которые будет использовать наше приложение. Он также настраивает все инструменты maven, используемые для упаковки каждого модуля нашего приложения. Вы можете посмотреть пример кода части -1 здесь .

Поэтому до сих пор в каталоге, где мы будем разрабатывать наше приложение, у нас есть одна папка с именем sample-parent, и в этом каталоге находится файл pom.xml . Наш родительский пом!

CapturFiles_1

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

  • Образец уха
  • образец-веб
  • Sample-услуги
  • Образец-домен

Нам нужно создать связанные модули maven и добавить отдельные файлы pom.xml для каждого из них.

Определение военного модуля

В папке sample-parent мы создаем подпапку с именем sample-web и добавляем файл pom.xml. (некоторые люди делают это на одном уровне).

1
2
3
4
5
6
7
8
9
  <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)
      • ресурсы (ресурсы, как свойства)
    • контрольная работа
      • Ява
      • Ресурсы

CapturFiles_2

В подпапке webapp я уже предварительно создал файл \ WEB-INF \ web.xml. Я мог бы пропустить эту часть, потому что плагин maven может сделать это для нас, но просто чтобы показать, что есть случаи, когда вы хотите создать его самостоятельно и любые пользовательские записи

CapturFiles_3

Если вам интересно, что «положить» в пустой файл Servlet 3.1 web.xml, посмотрите здесь или загрузите код для этого поста. Я также добавил в подпапку java простого пакета очень простой сервлет, который будет включен в наше приложение. Всего несколько строк кода. Опять же, вы можете скачать весь код по соответствующей ссылке git (bitbucket) в конце поста.

CapturFiles_6

Итак, мы добавили всего несколько строк в наш 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)

Ресурсы