Учебники

Maven — POM

POM расшифровывается как объектная модель проекта. Это основная единица работы в Maven. Это файл XML, который находится в базовом каталоге проекта как pom.xml.

POM содержит информацию о проекте и различные детали конфигурации, используемые Maven для создания проекта (ов).

POM также содержит цели и плагины. При выполнении задачи или цели Maven ищет POM в текущем каталоге. Он читает POM, получает необходимую информацию о конфигурации, а затем выполняет цель. Некоторые конфигурации, которые могут быть указаны в POM, следующие:

  • зависимости проекта
  • плагины
  • цели
  • строить профили
  • версия проекта
  • Разработчики
  • список рассылки

Перед созданием POM мы должны сначала определить группу проекта (groupId), ее имя (artifactId) и его версию, поскольку эти атрибуты помогают однозначно идентифицировать проект в репозитории.

Пример POM

<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>

   <groupId>com.companyname.project-group</groupId>
   <artifactId>project</artifactId>
   <version>1.0</version>
</project>

Следует отметить, что для каждого проекта должен быть один файл POM.

  • Для всех файлов POM требуется элемент проекта и три обязательных поля: groupId, artifactId, version .

  • Обозначение проектов в репозитории: groupId: artifactId: версия .

  • Минимальные требования для POM —

Для всех файлов POM требуется элемент проекта и три обязательных поля: groupId, artifactId, version .

Обозначение проектов в репозитории: groupId: artifactId: версия .

Минимальные требования для POM —

Sr.No. Узел и описание
1

Корень проекта

Это корневой тег проекта. Вам необходимо указать основные настройки схемы, такие как схема apache и спецификация w3.org.

2

Версия модели

Версия модели должна быть 4.0.0.

3

идентификатор_группы

Это идентификатор группы проекта. Это обычно уникально среди организации или проекта. Например, у банковской группы com.company.bank есть все связанные с банком проекты.

4

артефакта

Это идентификатор проекта. Это вообще название проекта. Например, потребительский банкинг. Наряду с groupId, artifactId определяет местоположение артефакта в хранилище.

5

версия

Это версия проекта. Наряду с groupId, он используется в хранилище артефакта для отделения версий друг от друга. Например —

com.company.bank:consumer-banking:1.0

com.company.bank:consumer-banking:1.1.

Корень проекта

Это корневой тег проекта. Вам необходимо указать основные настройки схемы, такие как схема apache и спецификация w3.org.

Версия модели

Версия модели должна быть 4.0.0.

идентификатор_группы

Это идентификатор группы проекта. Это обычно уникально среди организации или проекта. Например, у банковской группы com.company.bank есть все связанные с банком проекты.

артефакта

Это идентификатор проекта. Это вообще название проекта. Например, потребительский банкинг. Наряду с groupId, artifactId определяет местоположение артефакта в хранилище.

версия

Это версия проекта. Наряду с groupId, он используется в хранилище артефакта для отделения версий друг от друга. Например —

com.company.bank:consumer-banking:1.0

com.company.bank:consumer-banking:1.1.

Супер ПОМ

Super POM является POM по умолчанию Maven. Все POM наследуются от родителя или по умолчанию (несмотря на явное определение или нет). Этот базовый POM известен как Super POM и содержит значения, унаследованные по умолчанию.

Maven использует эффективную POM (конфигурация из супер-помпа плюс конфигурация проекта) для выполнения соответствующей цели. Это помогает разработчикам указать минимальные детали конфигурации в его / ее pom.xml. Хотя конфигурации могут быть легко переопределены.

Простой способ взглянуть на конфигурации по умолчанию для Super POM — выполнить следующую команду: mvn help :ffective-pom

Создайте pom.xml в любом каталоге на вашем компьютере. Используйте содержимое вышеупомянутого примера pom.

В приведенном ниже примере мы создали файл pom.xml в папке C: \ MVN \ project.

Теперь откройте командную консоль, перейдите в папку, содержащую pom.xml, и выполните следующую команду mvn .

C:\MVN\project>mvn help:effective-pom

Maven начнет обработку и отобразит эффективную помпу.

[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'help'.
[INFO] ------------------------------------------------------------------------
[INFO] Building Unnamed - com.companyname.project-group:project-name:jar:1.0
[INFO]    task-segment: [help:effective-pom] (aggregator-style)
[INFO] ------------------------------------------------------------------------
[INFO] [help:effective-pom {execution: default-cli}]
[INFO]

.....

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: < 1 second
[INFO] Finished at: Thu Jul 05 11:41:51 IST 2012
[INFO] Final Memory: 6M/15M
[INFO] ------------------------------------------------------------------------

Эффективное POM отображается как результат в консоли, после применения наследования, интерполяции и профилей.

<?xml version="1.0" encoding="UTF-8"?>
<!-- ============================================== -->
<!-- -->
<!-- Generated by Maven Help Plugin on 2015-04-09T11:41:51 -->
<!-- See: http://maven.apache.org/plugins/maven-help-plugin/ -->
<!-- -->
<!-- ==============================================-->

<!-- ==============================================-->
<!-- -->
<!-- Effective POM for project -->
<!-- 'com.companyname.project-group:project-name:jar:1.0' -->
<!-- -->
<!-- ============================================== -->

<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>
   <groupId>com.companyname.project-group</groupId>
   <artifactId>project</artifactId>
   <version>1.0</version>
   <build>
      <sourceDirectory>C:\MVN\project\src\main\java</sourceDirectory>
      <scriptSourceDirectory>src/main/scripts</scriptSourceDirectory>

      <testSourceDirectory>C:\MVN\project\src\test\java</testSourceDirectory>
      <outputDirectory>C:\MVN\project\target\classes</outputDirectory>
      <testOutputDirectory>C:\MVN\project\target\test-classes</testOutputDirectory>
      <resources>
         <resource>
            <mergeId>resource-0</mergeId>
            <directory>C:\MVN\project\src\main\resources</directory>
         </resource>
      </resources>
      <testResources>
         <testResource>
            <mergeId>resource-1</mergeId>
            <directory>C:\MVN\project\src\test\resources</directory>
         </testResource>
      </testResources>
      <directory>C:\MVN\project\target</directory>
      <finalName>project-1.0</finalName>
   
      <pluginManagement>
         <plugins>
            <plugin>
               <artifactId>maven-antrun-plugin</artifactId>
               <version>1.3</version>
            </plugin>
            <plugin>
               <artifactId>maven-assembly-plugin<  /artifactId>
               <version>2.2-beta-2</version>
            </plugin>
            <plugin>
               <artifactId>maven-clean-plugin<  /artifactId>
               <version>2.2</version>
            </plugin>
         
            <plugin>
               <artifactId>maven-compiler-plugin</artifactId>
               <version>2.0.2</version>
            </plugin>
            <plugin>
               <artifactId>maven-dependency-plugin</artifactId>     
               <version>2.0</version>
            </plugin>
            <plugin>
               <artifactId>maven-deploy-plugin</artifactId>
               <version>2.4</version>
            </plugin>
         
            <plugin>
               <artifactId>maven-ear-plugin</artifactId>
               <version>2.3.1</version>
            </plugin>
            <plugin>
               <artifactId>maven-ejb-plugin</artifactId>
               <version>2.1</version>
            </plugin>
            <plugin>
               <artifactId>maven-install-plugin</artifactId>
               <version>2.2</version>
            </plugin>
         
            <plugin>
               <artifactId>maven-jar-plugin</artifactId>
               <version>2.2</version>
            </plugin>
            <plugin>
               <artifactId>maven-javadoc-plugin</artifactId>
               <version>2.5</version>
            </plugin>
            <plugin>
               <artifactId>maven-plugin-plugin</artifactId>
               <version>2.4.3</version>
            </plugin>
         
            <plugin>
               <artifactId>maven-rar-plugin</artifactId>
               <version>2.2</version>
            </plugin>
            <plugin>
               <artifactId>maven-release-plugin</artifactId>
               <version>2.0-beta-8</version>
            </plugin>
            <plugin>
               <artifactId>maven-resources-plugin</artifactId>
               <version>2.3</version>
            </plugin>
         
            <plugin>
               <artifactId>maven-site-plugin</artifactId>
               <version>2.0-beta-7</version>
            </plugin>
            <plugin>
               <artifactId>maven-source-plugin</artifactId>
               <version>2.0.4</version>
            </plugin>
            <plugin>
               <artifactId>maven-surefire-plugin</artifactId>
               <version>2.4.3</version>
            </plugin>
            <plugin>
               <artifactId>maven-war-plugin</artifactId>
               <version>2.1-alpha-2</version>
            </plugin>
         </plugins>
      </pluginManagement>
   
      <plugins>
         <plugin>
            <artifactId>maven-help-plugin</artifactId>
            <version>2.1.1</version>
         </plugin>
      </plugins>
   </build>
   
   <repositories>
      <repository>
         <snapshots>
            <enabled>false</enabled>
         </snapshots>
         <id>central</id>
         <name>Maven Repository Switchboard</name>
         <url>http://repo1.maven.org/maven2</url>
      </repository>
   </repositories>
   <pluginRepositories>
      <pluginRepository>
         <releases>
            <updatePolicy>never</updatePolicy>
         </releases>
         <snapshots>
            <enabled>false</enabled>
         </snapshots>
         <id>central</id>
         <name>Maven Plugin Repository</name>
         <url>http://repo1.maven.org/maven2</url>
      </pluginRepository>
   </pluginRepositories>
   <reporting>
      <outputDirectory>C:\MVN\project\target/site</outputDirectory>
   </reporting>
</project>

В приведенном выше файле pom.xml вы можете увидеть структуру исходных папок проекта по умолчанию, выходной каталог, требуемые плагины, репозитории, каталог отчетов, который Maven будет использовать при выполнении желаемых целей.

Maven pom.xml также не требуется писать вручную. Maven предоставляет множество плагинов архетипов для создания проектов, которые по порядку создают структуру проекта и pom.xml