Подробное объяснение pom.xml в учебнике Maven

maven

:notebook: Эта статья была заархивирована в: "blog"

Введение

Что такое пом?

POM — это аббревиатура Project Object Model, то есть объектная модель проекта.

pom.xml — это файл конфигурации maven, который используется для описания различной информации о проекте.

обзор конфигурации 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>

  <!-- The Basics -->
  <groupId>...</groupId>
  <artifactId>...</artifactId>
  <version>...</version>
  <packaging>...</packaging>
  <dependencies>...</dependencies>
  <parent>...</parent>
  <dependencyManagement>...</dependencyManagement>
  <modules>...</modules>
  <properties>...</properties>

  <!-- Build Settings -->
  <build>...</build>
  <reporting>...</reporting>

  <!-- More Project Information -->
  <name>...</name>
  <description>...</description>
  <url>...</url>
  <inceptionYear>...</inceptionYear>
  <licenses>...</licenses>
  <organization>...</organization>
  <developers>...</developers>
  <contributors>...</contributors>

  <!-- Environment Settings -->
  <issueManagement>...</issueManagement>
  <ciManagement>...</ciManagement>
  <mailingLists>...</mailingLists>
  <scm>...</scm>
  <prerequisites>...</prerequisites>
  <repositories>...</repositories>
  <pluginRepositories>...</pluginRepositories>
  <distributionManagement>...</distributionManagement>
  <profiles>...</profiles>
</project>

базовая конфигурация

  • project - projectявляется корнем дескриптора в pom.xml.
  • modelVersion - modelVersionУказывает, какой версии дескриптора соответствует файл pom.xml. maven 2 и 3 могут быть только 4.0.0.

Обычно пакеты jar распознаются как:groupId:artifactId:versionформа.

<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>org.codehaus.mojo</groupId>
  <artifactId>my-project</artifactId>
  <version>1.0</version>
  <packaging>war</packaging>
</project>

координаты мавена

В maven, согласноgroupId,artifactId,versionв сочетании сgroupId:artifactId:versionдля уникальной идентификации пакета jar.

  • groupId- Идентификаторы групп, организаций. По соглашению для идентификатора сообщества он начинается с доменного имени, обратного имени организации, создавшей проект. Обычно соответствует структуре пакета java.
  • artifactId- Уникальный идентификатор для отдельных предметов. Такие, как наш кот, общины и т. д. Не включайте точку (.) в ArtiftId.
  • version- Конкретная версия предмета.
    • Maven имеет свою собственную спецификацию версии, которая обычно определяет основную версию, вспомогательную версию и добавочный квалификатор версии следующим образом, например 1.2.3-beta-01. Следует отметить, что собственный алгоритм maven для оценки версии заключается в том, что основная, второстепенная и инкрементальная части сравниваются по числам, а часть квалификатора сравнивается по строкам, поэтому будьте осторожны при сравнении между альфа-2 и альфа-15, лучше всего использовать формат альфа-02.
    • Maven может использовать несколько специальных строк SNAPSHOT, LATEST, RELEASE во время управления версиями. Например1.0-SNAPSHOT. Смысл и логика обработки каждой части следующие:
      • SNAPSHOT- Эта версия обычно используется в процессе разработки, что указывает на нестабильную версию.
      • LATEST- Относится к последнему выпуску определенного компонента. Этот выпуск может быть версией выпуска или версией моментального снимка, в зависимости от того, какое время является последним.
      • RELEASE: Относится к последнему выпуску.
  • packaging- Тип проекта, описывающий вывод проекта после упаковки, по умолчанию jar. Общие типы вывода: pom, jar, maven-plugin, ejb, war, ear, rar, par.

Конфигурация зависимостей

dependencies

<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
                      https://maven.apache.org/xsd/maven-4.0.0.xsd">
  ...
  <dependencies>
    <dependency>
     <groupId>org.apache.maven</groupId>
      <artifactId>maven-embedder</artifactId>
      <version>2.0</version>
      <type>jar</type>
      <scope>test</scope>
      <optional>true</optional>
      <exclusions>
        <exclusion>
          <groupId>org.apache.maven</groupId>
          <artifactId>maven-core</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    ...
  </dependencies>
  ...
</project>
  • groupId, artifactId, version- и в базовой комплектацииgroupId,artifactId,versionто же самое значение.
  • type- Перепискаpackagingтип, если не используетсяtypeтег, maven по умолчанию использует jar.
  • scope— Этот элемент относится к пути к классам задачи (компиляция и среда выполнения, тесты и т. д.) и тому, как ограничить транзитивность зависимостей. Доступно 5 лимитов:
    • compile- если не указаноscopeтег, maven по умолчанию использует эту область. Зависимости компиляции доступны для всех путей к классам. Кроме того, эти зависимости распространяются на зависимые проекты.
    • provided- Аналогично компиляции, но указывает, что вы хотите, чтобы jdk или контейнер предоставил его во время выполнения. Он работает только при компиляции и тестировании пути к классам, а не для прохода.
    • runtime— Эта область указывает, что зависимости не требуются для компиляции, а используются для выполнения. Это путь к классам выполнения и тестирования, но не путь к классам компиляции.
    • test— Эта область указывает, что для нормального использования приложения не требуется никаких зависимостей, и применяется только к этапам компиляции и выполнения теста. Это не транзитивно.
    • system- Эта область аналогична предоставленной, за исключением того, что вы должны предоставить банку, которая явно включает ее. Артефакт всегда доступен и не ищется в репозитории.
  • systemPath- Используется только в том случае, если областью зависимостей является система. В противном случае, если этот элемент установлен, сборка завершится ошибкой. Путь должен быть абсолютным, поэтому рекомендуется использоватьpropertieчтобы указать конкретный путь, например ${java.home}/lib. Поскольку предполагается, что ранее были установлены общесистемные зависимости, maven будет проверять не репозиторий проекта, а наличие файла библиотеки. Если нет, maven потерпит неудачу и предложит загрузить и установить вручную.
  • optional - optionalСообщите другим проектам, что вам не нужна эта зависимость для работы при использовании этого проекта.
  • exclusions- содержит один или несколько элементов исключения, каждый из которых содержит представление исключаемых зависимостейgroupIdиartifactId. В отличие от необязательных опций, которые могут быть установлены и использованы, а могут и не быть, исключения активно удаляются из дерева зависимостей.

parent

maven поддерживает наследование. Дочерние POM могут использоватьparentУказывает родительский 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
                      https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>my-parent</artifactId>
    <version>2.0</version>
    <relativePath>../my-parent</relativePath>
  </parent>

  <artifactId>my-project</artifactId>
</project>
  • relativePath- УведомлениеrelativePathэлемент. Это не требуется перед поиском в локальных и удаленных репозиториях, но может использоваться в качестве индикатора для maven, чтобы сначала выполнить поиск пути, заданного родителем этого проекта.

dependencyManagement

dependencyManagement— это объявление, указывающее на зависимость от пакета jar. т.е. ты в проектеdependencyManagementЗависимость объявлена ​​ниже, maven не будет загружать зависимость,dependencyManagementОбъявления могут наследоваться дочерними POM.

dependencyManagementОдин из вариантов использования — когда есть родительский и дочерний проекты, родительский проект может использовать преимуществаdependencyManagementОбъявите пакет jar зависимостей, который нужно использовать в подпроекте, а затем, когда одному или нескольким подпроектам нужно загрузить зависимость, его можно будет добавить в подпроектdependenciesТолько конфигурация узлаgroupIdиartifactIdВы можете заполнить ссылку зависимостей.

dependencyManagementОсновная цель — управлять версиями зависимых пакетов унифицированным образом, чтобы гарантировать, что все подпроекты используют одну и ту же версию и похожиеpluginsиpluginManagement.

modules

Список подмодулей.

<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
                      https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.codehaus.mojo</groupId>
  <artifactId>my-parent</artifactId>
  <version>2.0</version>
  <packaging>pom</packaging>

  <modules>
    <module>my-project</module>
    <module>another-project</module>
    <module>third-project/pom-example.xml</module>
  </modules>
</project>

properties

список имущества. Определенные свойства можно использовать в любом месте файла pom.xml. Использовать как${propertie}.

<project>
  ...
  <properties>
    <maven.compiler.source>1.7<maven.compiler.source>
    <maven.compiler.target>1.7<maven.compiler.target>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  </properties>
  ...
</project>

конфигурация сборки

build

сборку можно разделить на «сборку проекта» и «сборку профиля».

<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
                      https://maven.apache.org/xsd/maven-4.0.0.xsd">
  ...
  <!-- "Project Build" contains more elements than just the BaseBuild set -->
  <build>...</build>

  <profiles>
    <profile>
      <!-- "Profile Build" contains a subset of "Project Build"s elements -->
      <build>...</build>
    </profile>
  </profiles>
</project>

Базовая конфигурация сборки:

<build>
  <defaultGoal>install</defaultGoal>
  <directory>${basedir}/target</directory>
  <finalName>${artifactId}-${version}</finalName>
  <filters>
    <filter>filters/filter1.properties</filter>
  </filters>
  ...
</build>

defaultGoal: цель или этап выполнения по умолчанию. Если задана цель, она должна быть определена так, как если бы она была в командной строке (например, jar:jar). То же самое верно, если фаза определена (например, установка).

directory: Выходной путь при построении. По умолчанию:${basedir}/target.

finalName: это окончательное имя сборки проекта (исключая расширение файла, например: my-project-1.0.jar).

filter:определение* .propertiesфайл, содержащий список свойств (описанных ниже), применимых к ресурсу, настройки которого приняты. Другими словами, пара «имя=значение», определенная в файле фильтра, заменяет строку ${name} в коде.

resources

Конфигурация ресурсов. Файлы ресурсов обычно представляют собой не код, который не нужно компилировать, а содержимое, которое необходимо включить в проект.

<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
                      https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <build>
    ...
    <resources>
      <resource>
        <targetPath>META-INF/plexus</targetPath>
        <filtering>false</filtering>
        <directory>${basedir}/src/main/plexus</directory>
        <includes>
          <include>configuration.xml</include>
        </includes>
        <excludes>
          <exclude>**/*.properties</exclude>
        </excludes>
      </resource>
    </resources>
    <testResources>
      ...
    </testResources>
    ...
  </build>
</project>
  • resources: список элементов ресурсов, каждый из которых описывает файл, связанный с этим проектом, и место, куда следует включить этот файл.
  • targetPath: указывает структуру каталогов для размещения наборов ресурсов из сборки. Целевой путь по умолчанию указывает на базовый каталог. Обычно указанный целевой путь для ресурсов, которые должны быть упакованы в банку, — это META-INF.
  • filtering: значение истинно или ложно. Указывает, следует ли включить фильтрацию для этого ресурса. Обратите внимание, что этот фильтр* .propertiesФайлы не обязательно определять для фильтрации — ресурсы также могут использовать свойства, определенные в POM по умолчанию (например, ${project.version}), и передавать ему флаг «-D» в командной строке (например, «-Dname = value") или явно определяется элементом properties. Наложение файла фильтра выше.
  • directoryЗначение : определяет путь к ресурсу. Каталог по умолчанию для сборки${basedir}/src/main/resources.
  • includes: набор шаблонов сопоставления файлов, указывающих файлы, которые нужно включить в каталог, используя * в качестве подстановочного знака.
  • excludes: иincludesТочно так же, чтобы указать файлы в каталоге для исключения, используйте * в качестве подстановочного знака. Примечание: еслиincludeиexcludeВ случае конфликта maven закончитсяexcludeкак действующий элемент.
  • testResources: testResourcesиresourcesФункции похожи, разница только в следующем:testResourcesУказанный ресурс используется только на этапе тестирования, и его каталог ресурсов по умолчанию:${basedir}/src/test/resources.

plugins

<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
                      https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <build>
    ...
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>2.6</version>
        <extensions>false</extensions>
        <inherited>true</inherited>
        <configuration>
          <classifier>test</classifier>
        </configuration>
        <dependencies>...</dependencies>
        <executions>...</executions>
      </plugin>
    </plugins>
  </build>
</project>
  • groupId, artifactId, version: и в базовой комплектацииgroupId,artifactId,versionто же самое значение.

  • extensions: Значение истинно или ложно. Загружать ли расширение для этого плагина. По умолчанию ложно.

  • inherited: Значение истинно или ложно. Должна ли эта конфигурация плагина применяться к POM, которые наследуются от этого плагина. Значение по умолчанию верно.

  • configuration- Это конфигурация для личных плагинов, которые здесь объясняться не будут.

  • dependencies:здесьdependenciesявляется зависимостью, требуемой самим плагином.

  • executions: следует помнить, что у плагинов может быть несколько целей. Для каждой цели может быть отдельная конфигурация, и может быть даже возможно полностью привязать цель плагина к другому этапу. Выполняет выполнение цели, которая настраивает плагин.

    • id: идентификатор цели выполнения.
    • goals: Как и все элементы POM во множественном числе, он содержит список отдельных элементов. В этом случае список целей плагина, указанный в этом блоке выполнения.
    • phase: это фаза, на которой выполняется целевой список. Это очень мощная опция, которая позволяет привязать любую цель к любому этапу жизненного цикла сборки, изменяя поведение maven по умолчанию.
    • inherited: Как и в случае с унаследованным элементом выше, установка этого значения false не позволяет maven передать это выполнение своим дочерним элементам. Этот элемент имеет значение только для родительского POM.
    • configuration: То же, что и выше, но ограничивает конфигурацию этим конкретным списком целей, а не всеми целями в плагине.
<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
                      https://maven.apache.org/xsd/maven-4.0.0.xsd">
  ...
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-antrun-plugin</artifactId>
        <version>1.1</version>
        <executions>
          <execution>
            <id>echodir</id>
            <goals>
              <goal>run</goal>
            </goals>
            <phase>verify</phase>
            <inherited>false</inherited>
            <configuration>
              <tasks>
                <echo>Build Dir: ${project.build.directory}</echo>
              </tasks>
            </configuration>
          </execution>
        </executions>

      </plugin>
    </plugins>
  </build>
</project>

pluginManagement

иdependencyManagementТочно так же в текущем POM объявлен только плагин, а не импортированный. Настраивать только в дочернем POMgroupIdиartifactIdСсылка на подключаемый модуль выполнена, и дочерний POM имеет право переопределить определение pluginManagement.

Его цель — унифицировать версии плагинов для всех дочерних POM.

directories

<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
                      https://maven.apache.org/xsd/maven-4.0.0.xsd">
  ...
  <build>
    <sourceDirectory>${basedir}/src/main/java</sourceDirectory>
    <scriptSourceDirectory>${basedir}/src/main/scripts</scriptSourceDirectory>
    <testSourceDirectory>${basedir}/src/test/java</testSourceDirectory>
    <outputDirectory>${basedir}/target/classes</outputDirectory>
    <testOutputDirectory>${basedir}/target/test-classes</testOutputDirectory>
    ...
  </build>
</project>

Коллекция элементов каталога существует вbuildэлемент, он устанавливает различные структуры каталогов для всего POM. Поскольку они не существуют в сборке файла конфигурации, их нельзя изменить в файле конфигурации.

Этот каталог используется, если в качестве значения вышеуказанного элемента каталога задан абсолютный путь (когда атрибут расширен). В противном случае это относительно базового каталога сборки:${basedir}.

extensions

Расширение представляет собой список артефактов, используемых в этой сборке. Они будут включены в путь к классам, где запускается сборка. Они позволяют расширять процесс сборки (например, добавлять ftp-провайдера в транспортный механизм Wagon) и позволяют активным плагинам вносить изменения в жизненный цикл сборки. Проще говоря, расширения — это артефакты, которые активируются во время сборки. Расширению не нужно ничего делать, и оно не содержит Mojo. Таким образом, расширения отлично подходят для указания одной из нескольких реализаций общего интерфейса плагина.

<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
                      https://maven.apache.org/xsd/maven-4.0.0.xsd">
  ...
  <build>
    ...
    <extensions>
      <extension>
        <groupId>org.apache.maven.wagon</groupId>
        <artifactId>wagon-ftp</artifactId>
        <version>1.0-alpha-3</version>
      </extension>
    </extensions>
    ...
  </build>
</project>

reporting

Отчет содержит конкретныеsiteЭлементы этапа сборки. Некоторые плагины maven могут генерироватьreportingОтчет настроен под элементом, например: сгенерировать отчет javadoc.reportingиbuildПлагины конфигурации элементов имеют аналогичные возможности. Очевидная разница в том, что контроль таргета плагина в блоке исполнения не является мелкозернистым, отчет настраиваетсяreportSetэлементы тонкого контроля. Тонкая разница в том, чтоreportingпод элементомconfigurationэлементы можно использовать какbuildвнизconfiguration, хотя и не наоборот (buildвнизconfigurationне влияетreportingпод элементомconfiguration).

Еще одно отличиеpluginвнизoutputDirectoryэлемент. В случае отчетов каталогом вывода по умолчанию является${basedir}/target/site.

<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
                      https://maven.apache.org/xsd/maven-4.0.0.xsd">
  ...
  <reporting>
    <plugins>
      <plugin>
        ...
        <reportSets>
          <reportSet>
            <id>sunlink</id>
            <reports>
              <report>javadoc</report>
            </reports>
            <inherited>true</inherited>
            <configuration>
              <links>
                <link>http://java.sun.com/j2se/1.5.0/docs/api/</link>
              </links>
            </configuration>
          </reportSet>
        </reportSets>
      </plugin>
    </plugins>
  </reporting>
  ...
</project>

Информация о проекте

Информация о проекте, относящаяся к этой части этикеткини то, ни другое не нужно, то есть его вообще можно оставить пустым.

Его роль ограничивается описанием деталей предмета.

Следующий пример представляет собой список тегов, связанных с информацией о проекте:

<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
                      https://maven.apache.org/xsd/maven-4.0.0.xsd">
  ...

  <!-- 项目信息 begin -->

  <!--项目名-->
  <name>maven-notes</name>

  <!--项目描述-->
  <description>maven 学习笔记</description>

  <!--项目url-->
  <url>https://github.com/dunwu/maven-notes</url>

  <!--项目开发年份-->
  <inceptionYear>2017</inceptionYear>

  <!--开源协议-->
  <licenses>
    <license>
      <name>Apache License, Version 2.0</name>
      <url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
      <distribution>repo</distribution>
      <comments>A business-friendly OSS license</comments>
    </license>
  </licenses>

  <!--组织信息(如公司、开源组织等)-->
  <organization>
    <name>...</name>
    <url>...</url>
  </organization>

  <!--开发者列表-->
  <developers>
    <developer>
      <id>victor</id>
      <name>Zhang Peng</name>
      <email>forbreak at 163.com</email>
      <url>https://github.com/dunwu</url>
      <organization>...</organization>
      <organizationUrl>...</organizationUrl>
      <roles>
        <role>architect</role>
        <role>developer</role>
      </roles>
      <timezone>+8</timezone>
      <properties>...</properties>
    </developer>
  </developers>

  <!--代码贡献者列表-->
   <contributors>
    <contributor>
      <!--标签内容和<developer>相同-->
    </contributor>
  </contributors>

  <!-- 项目信息 end -->

  ...
</project>

Эта часть тегов очень проста, в основном может работать так, как следует из названия, и все они являются необязательными тегами, так что вот лишь краткое введение:

  • name- Полное название проекта

  • description- Описание Проекта

  • url- Обычно хост репозитория проекта

  • inceptionYear- Год разработки

  • licenses- Протокол с открытым исходным кодом

  • organization- Информация об организации, которой принадлежит проект

  • developers- Список разработчиков проекта

  • contributors- список участников проекта,<contributor>подтеги и<developer>точно так же.

Конфигурация среды

issueManagement

Это определяет используемую систему отслеживания ошибок (Bugzilla, TestTrack, ClearQuest и т. д.). Хотя ничто не мешает плагинам использовать эту информацию, в основном она используется для создания проектной документации.

<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
                      https://maven.apache.org/xsd/maven-4.0.0.xsd">
  ...
  <issueManagement>
    <system>Bugzilla</system>
    <url>http://127.0.0.1/bugzilla/</url>
  </issueManagement>
  ...
</project>

ciManagement

CI строит конфигурацию системы, в основном указывая механизм уведомления и почтовый ящик, который нужно уведомить.

<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
                      https://maven.apache.org/xsd/maven-4.0.0.xsd">
  ...
  <ciManagement>
    <system>continuum</system>
    <url>http://127.0.0.1:8080/continuum</url>
    <notifiers>
      <notifier>
        <type>mail</type>
        <sendOnError>true</sendOnError>
        <sendOnFailure>true</sendOnFailure>
        <sendOnSuccess>false</sendOnSuccess>
        <sendOnWarning>false</sendOnWarning>
        <configuration><address>continuum@127.0.0.1</address></configuration>
      </notifier>
    </notifiers>
  </ciManagement>
  ...
</project>

mailingLists

Списки рассылки

<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
                      https://maven.apache.org/xsd/maven-4.0.0.xsd">
  ...
  <mailingLists>
    <mailingList>
      <name>User List</name>
      <subscribe>user-subscribe@127.0.0.1</subscribe>
      <unsubscribe>user-unsubscribe@127.0.0.1</unsubscribe>
      <post>user@127.0.0.1</post>
      <archive>http://127.0.0.1/user/</archive>
      <otherArchives>
        <otherArchive>http://base.google.com/base/1/127.0.0.1</otherArchive>
      </otherArchives>
    </mailingList>
  </mailingLists>
  ...
</project>

scm

SCM (управление конфигурацией программного обеспечения, также известное как управление исходным кодом/контролем или краткое управление версиями). Общие sms — это svn и git.

<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
                      https://maven.apache.org/xsd/maven-4.0.0.xsd">
  ...
  <scm>
    <connection>scm:svn:http://127.0.0.1/svn/my-project</connection>
    <developerConnection>scm:svn:https://127.0.0.1/svn/my-project</developerConnection>
    <tag>HEAD</tag>
    <url>http://127.0.0.1/websvn/my-project</url>
  </scm>
  ...
</project>

prerequisites

Заданные условия для выполнения 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
                      https://maven.apache.org/xsd/maven-4.0.0.xsd">
  ...
  <prerequisites>
    <maven>2.0.6</maven>
  </prerequisites>
  ...
</project>

repositories

repositoriesпредставляет собой набор артефактов в соответствии со структурой каталога репозитория Maven. Центральный репозиторий Maven по умолчанию находится по адресу https://repo.maven.apache.org/maven2/.

<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
                      https://maven.apache.org/xsd/maven-4.0.0.xsd">
  ...
  <repositories>
    <repository>
      <releases>
        <enabled>false</enabled>
        <updatePolicy>always</updatePolicy>
        <checksumPolicy>warn</checksumPolicy>
      </releases>
      <snapshots>
        <enabled>true</enabled>
        <updatePolicy>never</updatePolicy>
        <checksumPolicy>fail</checksumPolicy>
      </snapshots>
      <id>codehausSnapshots</id>
      <name>Codehaus Snapshots</name>
      <url>http://snapshots.maven.codehaus.org/maven2</url>
      <layout>default</layout>
    </repository>
  </repositories>
  <pluginRepositories>
    ...
  </pluginRepositories>
  ...
</project>

pluginRepositories

иrepositoriesпочти.

<project xmlns="http://maven.apache.org/POM/4.0.0"
  xmlns:xsi="http://www.w3.org/001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
                      https://maven.apache.org/xsd/maven-4.0.0.xsd">
  ...
  <distributionManagement>
    ...
    <downloadUrl>http://mojo.codehaus.org/my-project</downloadUrl>
    <status>deployed</status>
  </distributionManagement>
  ...
</project>

distributionManagement

Он управляет распространением артефактов и вспомогательных файлов, созданных в процессе сборки. Начните с последнего элемента:

<project xmlns="http://maven.apache.org/POM/4.0.0"
  xmlns:xsi="http://www.w3.org/001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
                      https://maven.apache.org/xsd/maven-4.0.0.xsd">
  ...
  <distributionManagement>
    ...
    <downloadUrl>http://mojo.codehaus.org/my-project</downloadUrl>
    <status>deployed</status>
  </distributionManagement>
  ...
</project>
  • repository- иrepositoriesсходство

  • site- Информация о сайте

  • relocation- Место миграции проекта

profiles

activationЯвляетсяprofileключ. Сила файла конфигурации заключается в возможности в некоторых случаях изменять только базовый POM. Эти случаи проходятactivationэлемент указан.

<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
                      https://maven.apache.org/xsd/maven-4.0.0.xsd">
  ...
  <profiles>
    <profile>
      <id>test</id>
      <activation>
        <activeByDefault>false</activeByDefault>
        <jdk>1.5</jdk>
        <os>
          <name>Windows XP</name>
          <family>Windows</family>
          <arch>x86</arch>
          <version>5.1.2600</version>
        </os>
        <property>
          <name>sparrow-type</name>
          <value>African</value>
        </property>
        <file>
          <exists>${basedir}/file2.properties</exists>
          <missing>${basedir}/file1.properties</missing>
        </file>
      </activation>
      ...
    </profile>
  </profiles>
</project>

использованная литература