English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Автоматическое строительство определяет такую ситуацию: после успешного завершения строительства проекта, начинаются строительство связанных зависимых проектов, что гарантирует стабильность зависимых проектов.
Например, команда разрабатывает проект bus-core-api, и у нее есть еще два проекта app-web-ui и app-desktop-ui, которые зависят от этого проекта.
Проект app-web-ui использует снапшот версии 1.0 проекта bus-core-api:
<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>app-web-ui</groupId> <artifactId>app-web-ui</artifactId> <version>1.0</version> <packaging>jar</packaging> <dependencies> <dependency> <groupId>bus-core-api</groupId> <artifactId>bus-core-api</artifactId> <version>1.0-SNAPSHOT</version> </dependency> </dependencies> </project>
Проект app-desktop-ui использует снапшот версии 1.0 проекта bus-core-api:
<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>app-desktop-ui</groupId> <artifactId>app-desktop-ui</artifactId> <version>1.0</version> <packaging>jar</packaging> <dependencies> <dependency> <groupId>bus-core-api</groupId> <artifactId>bus-core-api</artifactId> <version>1.0-SNAPSHOT</version> </dependency> </dependencies> </project>
Проект bus-core-api:
<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>bus-core-api</groupId> <artifactId>bus-core-api</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> </project>
В настоящее время команда проекта app-web-ui и app-desktop-ui требует, чтобы их процесс сборки мог запускаться независимо от изменений в проекте bus-core-api.
Использование снапшотов гарантирует использование последней версии проекта bus-core-api, но для достижения вышеуказанных требований потребуется выполнить дополнительные работы.
Существует два способа:
Добавить в файл pom проекта bus-core-api цель post-build для запуска сборки проектов app-web-ui и app-desktop-ui.
Использование сервера непрерывной интеграции (CI), например, Hudson, для управления автоматизацией сборки.
Редактировать файл pom.xml проекта bus-core-api.
<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>bus-core-api</groupId> <artifactId>bus-core-api</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <build> <plugins> <plugin> <artifactId>maven-invoker-plugin</artifactId> <version>1.6</version> <configuration> <debug>true</debug> <pomIncludes> <pomInclude>app-web-ui/pom.xml</pomInclude> <pomInclude>app-desktop-ui/pom.xml</pomInclude> </pomIncludes> </configuration> <executions> <execution> <id>build</id> <goals> <goal>run</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project>
Откройте командную консоль, перейдите в папку 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] Building jar: C:\MVN\bus-core-ui\target\ bus-core-ui-1.0-SNAPSHOT.jar [INFO] ------------------------------------------------------------------ app-desktop-ui-1.0-SNAPSHOT.jar [INFO] ------------------------------------------------------------------
После успешного завершения строительства bus-core-api, Maven начнет строительство проекта app-web-ui.
[INFO] ------------------------------------------------------------------ [INFO] Building app-web-ui [INFO] task-segment: [package] [INFO] ------------------------------------------------------------------ ... ... [INFO] Building jar: C:\MVN\app-web-ui\target\ app-web-ui-1.0-SNAPSHOT.jar [INFO] ------------------------------------------------------------------ app-desktop-ui-1.0-SNAPSHOT.jar [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\ [INFO] Успешное строительство app-desktop-ui-1.0-SNAPSHOT.jar [INFO] Успешное строительство
Использование CI сервера (CI)
Если использовать CI сервер, то при добавлении нового проекта, например, app-mobile-ui в качестве зависимого проекта bus-core-api, разработчику не нужно обновлять pom файла проекта bus-core-api. Hudson будет использовать функцию управления зависимостями Maven для автоматического создания проекта.
Hudson рассматривает каждый процесс строительства как задачу. После того как код проекта будет отправлен в SVN (или любое другое инструмент управления кодом, которое настроено на Hudson), Hudson начнет задачу строительства проекта, и как только задача строительства будет завершена, Hudson автоматически запустит задачи строительства других зависимых проектов (строительство других зависимых проектов).