Maven - сборщик проектов.
POM - project object model.
Все pom наследуются от супер pom.
Super (родительский) pom имеет такие настройки:
Сочетание groupId и artifacId должно быть уникальным.
POM - project object model.
Все pom наследуются от супер pom.
Super (родительский) pom имеет такие настройки:
- удаленный репозиторий для плагинов и зависимостей,
- настройки build (test, resource, main...),
- плагины ( maven install, clean, ear, ejb ...).
Простейший пример pom.xml.
<project> <modelVersion>4.0.0</modelVersion> <groupId>org.sonatype.mavenbook.ch08</groupId> <artifactId>simplest-project</artifactId> <version>1</version> </project>
<version>1.0-SNAPSHOT</version> maven это читает как 1.0-20080207-230803-1, если бы этот пом задеплоен в 11:08 PM on February 7th, 2008 UTC.
Dependencies
- internal - от других модулей проекта.
- external - внешние библиотеки.
Dependency scopes
- compile - дефолтный скоуп, используется при компиляции и выполнении. Упаковуется.
- provided - зависимость поставляеться контейнером или JDK. Ипользуется при компиляции, но не при выполнении. Не упаковуется. Например, servlet-API, которое поставляеться сервером приложений.
- runtime - используеться только при выполнении. Упаковуется. Например, JDBC driver.
- test - используется в тестах (компиляция и выполнение).
- system - как provided, только путь к файлам нужно указывать явно в локальной файловой системе. Не рекоммендуется использовать.
<dependencyManagement> <dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.2</version> <scope>runtime</scope> </dependency> ... <dependencies> </dependencyManagement>DependecyManagement используется в parent pom, таким образом в child pom не указывается скоуп и версия.
Сочетание groupId и artifacId должно быть уникальным.