Афоризм
По жизни балансирую на тонкой грани между 'Береженого бог бережет' и 'Сгорел сарай — гори и хата'
Последние статьи

 • Активности Android
Многоэкранные Android приложения
 • Fragment dynamic
Динамическая загрузка фрагментов в Android
 • Fragment lifecycle
Жизненный цикл Fragment'ов в Android
 • Fragment example
Пример Fragment'ов в Android
 • Data Binding
Описание и пример Data Binding
 • Пример MVVM
Пример использования MVVM в Android
 • Компонент TreeTable
Описание компонента TreeTable для Swing
 • Пример TreeTable
Пример использования TreeTable
 • Хранилища Android
Внутренние и внешние хранилища данных
 • Пример SQLite
Пример использования SQLite в Android
 • WebSocket
Описание и пример реализации WebSocket
 • Визуальные компоненты
Улучшен компонент выбора даты из календаря
 • Анимация jQuery
Описание и примеры анимации элементов DOM
 • APK-файл Android
Создание apk-файла для android устройств, .dex файлы
 • платформа JaBricks
Платформа OSGi-приложения JaBricks
Поддержка проекта

Если Вам сайт понравился и помог, то будем признательны за Ваш «посильный» вклад в его поддержку и развитие
 • Yandex.Деньги
  410013796724260

 • Webmoney
  R335386147728
  Z369087728698

Maven в вопросах и ответах

На странице рассмотрены следующие вопросы использования фреймворка Maven :

  1. Команда создания нового проекта
  2. Структура файла описания проекта pom.xml
  3. GAV-параметры и полное наименование артефакта
  4. Назначение SNAPSHOT
  5. Область действия зависимости scope
  6. Использование внешних зависимостей
  7. Транзитивные зависимости
  8. Maven плагины
  9. Порядок выполнения maven команды
  10. Тестирование maven проекта
  11. Maven репозитории
  12. Предопределёные переменные в файле pom.xml

Команда создания нового проекта

Для создания нового проекта используется плагин archetype с целью (goal) generate. В команде необходимо указать параметры GAV (groupId, artifactId, version) и тип артефакта archetypeArtifactId. Количество разнотипных артефактов у фреймворка maven огромно. Пример копирования наименований архитипов в файл и создания простого maven-проекта :

1. Копирование наименований архитипов в файл
mvn archetype:generate > archetypes.txt

2. Создание простого maven проекта
mvn archetype:generate \
    -DgroupId=com.example \
    -DartifactId=framework-factory \
    -Dversion=1.0.0 \
    -DarchetypeArtifactId=maven-archetype-quickstart
 

Подробнее


Структура файла описания проекта pom.xml

При описании проекта в файле pom.xml используются следующие теги и секции :

projectэлемент верхнего уровня, описание проекта;
GAV-параметрыпараметры проекта;
urlинтернет-страница проекта;
propertiesсекция свойств проекта;
repositoriesсекция репозиториев;
dependenciesсекция определения зависимостей проекта;
buildописание сборки проекта

Не все секции файла описания проекта pom.xml являются обязательными.

Подробнее


GAV-параметры и полное наименование артефакта

Параметры артефакта GAV включают groupId, artifactId, version. Полное имя артефакта (координата) представляет четыре слова, разделенные знаком двоеточия в следующем порядке groupId:artifactId:packaging:version.

Подробнее


Назначение SNAPSHOT

SNAPSHOT используется в определении версии артефакта и обозначает незавершенность её разработки. При каждой сборке проекта maven проверяет наличие обновленной версии snapshot артефакта в удалённом репозитории и подгружает последний.

Подробнее


Область действия зависимости scope

Область действия зависимости scope определяет этап жизненного цикла проекта, в котором эта зависимость будет использоваться. Maven использует 6 областей :

  • compile - область по умолчанию, использутся, если scope не определена. Compile зависимости доступны во всех classpath проекта;
  • provided - очень похоже на compile, но эта зависимость в сборку не попадает. Предполагается, что зависимость (артефакт) уже присутствует в JDK или в WEB-контейнере. Эта область доступна только на этапах компиляции и тестирования и не является транзитивной;
  • runtime - зависимость с данной областью видимости не обязательна для compilation и используется в фазе выполнения;
  • test - зависимость используется при тестировании кода приложения;
  • system - область похожа на provided за исключением того, что необходимо определить физическое расположение артефакта на диске. Артефакт с этой областью видимости maven не ищет в репозитории;
  • import - эта область используется в зависимости секции <dependencyManagement> при сложных связях (см. dependencyManagement).

Подробнее


Использование внешних зависимостей

В качестве внешних зависимостей, как правило, используются собственные разработки, не размещаемые в центральном и локальном репозиториях. Внешние зависимости определяются в файле pom.xml также, как и другие зависимости – необходимо определить параметры GAV (groupId, artifactId, version) и область видимости scope как system. В теге <systemPath> необходимо указать абсолютный путь к файлу.

<dependencies>
    <dependency>
        <groupId>ru.carousel</groupId>
        <artifactId>carousel-lib</artifactId>
        <version>1.0.0</version>
        <scope>system</scope>
        <systemPath>
               d:/projects/libs/carousel-lib.jar
        </systemPath>
    </dependency>
</dependencies>


Транзитивные зависимости

Транзитивные зависимости позволяют избегать необходимости дополнительного указания в секции dependencies библиотек, которые требуются для самой зависимости, и maven включает их в проект автоматически. При разрешении конфликта версий используется принцип «ближайшей» зависимости, то есть выбирается зависимость, путь к которой через список зависимых проектов является наиболее коротким.

Команды «mvn depenency:list» и «mvn dependency:tree» позволяют вывести в консоль зависимости в виде списка или дерева соответственно.

Подробнее


Maven плагины

Maven использует два типа плагинов :

  • плагины сборки (build plugins) - определяются в секции <build></build> файла pom.xml и выполняются в процессе сборки;
  • плагины отчётов (reporting plugins) - определяются в секции <reporting></reporting> файла pom.xml и выполняются в процесса генерирования сайта.

Плагины используются для :

  • сборки проекта – cоздание файлов jar, war, ear;
  • компиляции исходных кодов проекта (java файлов);
  • тестирования модулей проекта – запуск JUnit тестов;
  • формирования отчётов проекта;
  • создания документации проекта.

Подробнее


Порядок выполнения maven команды

Как будет выполнена следующая команда


mvn clean dependency:copy-dependencies package
 

Аргументы clean и package являются фазами сборки проекта, «dependency:copy-dependencies» представляет собой задачу, которую выполняет плагин dependency для цели copy-dependencies (копирование зависимостей проекта в поддиректорию target/dependency).

Maven сначала выполнит фазу очистки clean, после этого будут скопированы зависимости "dependency:copy-dependencies", и в завершении выполнится сборка проекта.


Тестирование проекта

Для выполнения JUnit тестов проекта необходимо выполнить команду "mvn test". Чтобы выполнить определенный тест необходимо в командной строке указать полный путь [-Dtest=package.test-class] к конкретному тесту, например :


mvn test -Dtest=com.example.TestConnection
 

Для запуска сборки проекта с предварительной очисткой поддиректории "target" без выполнения тестов используйте следующую команду :


mvn clean package -Dmaven.test.skip=true
 

Выполнение тестов можно запретить в секции «properties» файла pom.xml. Для этого можно использовать тег <skipTests> или <maven.test.skip>. Например :

<properties>
    <maven.test.skip>true</maven.test.skip>
</properties>

Примечание : помните, что запретив выполнение тестов в файле pom.xml, нельзя будет выполнять тесты с помощью Maven.


Maven репозитории

Под репозиторием (repository) понимается, как правило, внешние центральные хранилища артефактов, в которых собрано огромное количество наиболее популярных и востребованных библиотек, и локальное хранилище (${user.home}\.m2\repository), в котором хранятся копии используемых ранее библиотек. Кроме этого, можно создать репозиторий в самом maven-проекте.

Используемые в проекте внешние репозитории описываются в секции <repositories> :

<repositories>
    <repository>
        <id>repo1.maven.org</id>
        <url>http://repo1.maven.org/maven2</url>
    </repository>
</repositories>

Подробнее


Предопределёные переменные в файле pom.xml

При описании проекта в файле pom.xml можно использовать переменные, на которые можно сослаться с помощью префиксов "project." или "pom." Наиболее часто используемые элементы :

  • ${project.build.directory} - "target" директория, или тоже самое ${pom.project.build.directory};
  • ${project.build.outputDirectory} - путь к директории куда компилятор складывает файлы по умолчанию "target/classes";
  • ${project.name} - наименование проекта;
  • ${project.version} - версия проекта.

Подробнее

  Рейтинг@Mail.ru