: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- Эта область аналогична предоставленной, за исключением того, что вы должны предоставить банку, которая явно включает ее. Артефакт всегда доступен и не ищется в репозитории.
-
compile- если не указано
-
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>