Автоматизированная сборка Maven
Автоматизированная сборка определяет сценарий: после успешной сборки проекта начинают собираться связанные с ним зависимые проекты, что обеспечивает стабильность зависимых от него проектов.
Например, команда разрабатывает проект bus-core-api, и есть два других проекта, app-web-ui и app-desktop-ui, которые зависят от этого проекта.
Проект app-web-ui использует снапшот 1.0 проекта bus-core-api:
Проект app-desktop-ui использует снапшот 1.0 проекта bus-core-api:
Проект bus-core-api:
Теперь команды проектов app-web-ui и app-desktop-ui требуют, чтобы независимо от того, когда проект bus-core-api изменяется, их процесс сборки мог запускаться.
Использование снапшотов гарантирует, что используется последняя версия проекта bus-core-api, но для выполнения вышеуказанного требования нам всё ещё нужно проделать дополнительную работу.
Можно использовать два метода:
- Добавьте операцию goal после сборки в pom-файл проекта bus-core-api, чтобы запускать сборки проектов app-web-ui и app-desktop-ui.
- Используйте сервер непрерывной интеграции (CI), например Hudson, чтобы управлять автоматизацией сборки самостоятельно.
Использование Maven
Измените файл pom.xml проекта bus-core-api.
Откройте консоль команд, перейдите в каталог C:\ > MVN > bus-core-api, а затем выполните следующую команду.
C:\MVN\bus-core-api>mvn clean package -U
После выполнения команды Maven начнёт сборку проекта bus-core-api.
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------
[INFO] Building bus-core-api
[INFO] task-segment: [clean, package]
[INFO] ------------------------------------------------------------------
...
[INFO] [jar:jar {execution: default-jar}]
[INFO] Building jar: C:\MVN\bus-core-ui\target\
bus-core-ui-1.0-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------
После успешной сборки bus-core-api Maven начнёт сборку проекта app-web-ui.
[INFO] ------------------------------------------------------------------
[INFO] Building app-web-ui
[INFO] task-segment: [package]
[INFO] ------------------------------------------------------------------
...
[INFO] [jar:jar {execution: default-jar}]
[INFO] Building jar: C:\MVN\app-web-ui\target\
app-web-ui-1.0-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------
После успешной сборки app-web-ui Maven начнёт сборку проекта app-desktop-ui.
[INFO] ------------------------------------------------------------------
[INFO] Building app-desktop-ui
[INFO] task-segment: [package]
[INFO] ------------------------------------------------------------------
...
[INFO] [jar:jar {execution: default-jar}]
[INFO] Building jar: C:\MVN\app-desktop-ui\target\
app-desktop-ui-1.0-SNAPSHOT.jar
[INFO] -------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] -------------------------------------------------------------------
Использование сервера непрерывной интеграции (CI)
Если используется сервер CI, когда новый проект, например app-mobile-ui в примере, добавляется как зависимость проекта bus-core-api, разработчикам не нужно обновлять pom проекта bus-core-api. Hudson будет использовать возможности управления зависимостями Maven для автоматизации создания проекта.

Hudson рассматривает каждую сборку проекта как задачу. После того как код проекта зафиксирован в SVN (или любой системе контроля версий, подключённой к Hudson), Hudson запустит задачу сборки проекта, и как только эта задача сборки завершится, Hudson автоматически запустит другие зависимые задачи сборки (сборки других зависимых проектов).
В приведённом выше примере, когда исходный код bus-core-ui обновляется в SVN, Hudson запускает сборку проекта. Как только сборка завершается успешно, Hudson автоматически ищет зависимые проекты, а затем запускает сборку проектов app-web-ui и app-desktop-ui.
Другие расширения