English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Automatisierte Bauvorgänge definieren einen solchen Szenario: Nachdem ein Projekt erfolgreich gebaut wurde, beginnen die verwandten Abhängigkeitsprojekte mit dem Bau, was die Stabilität der Abhängigkeitsprojekte gewährleistet.
z.B. eine Gruppe entwickelt ein Projekt bus-core-api, und es gibt zwei andere Projekte app-web-ui und app-desktop-ui hängt von diesem Projekt ab.
app-web-Das ui-Projekt verwendet die Bus-core-Das api-Projekt 1.0 Schnappschuss:
<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-Das ui-Projekt verwendet die Bus-core-Das api-Projekt 1.0 Schnappschuss:
<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-Projekt:
<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>
Jetzt App-web-ui und app-desktop-Die ui-Projektteam fordert, dass unabhängig von bus-core-Wenn sich das api-Projekt ändert, sollten alle ihre Build-Prozesse gestartet werden können.
Mit Snapshots kann sichergestellt werden, dass die neueste Bus-core-Das api-Projekt wird verwendet, aber um die obigen Anforderungen zu erfüllen, müssen wir zusätzliche Arbeiten leisten.
es gibt zwei Möglichkeiten, dies zu tun:
in der Bus-core-eine Post hinzufügen zur pom-Datei des api-Projekts-build Zieloperationen, um die App zu starten-web-ui und app-desktop-The build of the ui project.
Use a continuous integration (CI) server, such as Hudson, to manage build automation independently.
Modify bus-core-The pom.xml file of the api 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 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>
Open the command console, switch to C:\ > MVN > bus-core-Under the api directory, then execute the following command.
C:\MVN\bus-core-api>mvn clean package -U
After executing the command, Maven will start building the project 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-Nachdem das api-Build erfolgreich ist, beginnt Maven mit dem Bau des apps-web-ui-Projekt.
[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-Nachdem das ui-Build erfolgreich ist, beginnt Maven mit dem Bau des apps-desktop-ui-Projekt.
[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] -------------------------------------------------------------------
Wenn ein CI-Server verwendet wird, wird für jedes neue Projekt, zum Beispiel das Beispielprojekt app-mobile-ui hinzufügen als Abhängigkeit bus-core-Beim Erstellen des api-Projekts müssen Entwickler bus-core-pom des api-Projekts. Hudson wird die Abhängigkeitsverwaltungsfunktion von Maven nutzen, um die Automatisierung der Erstellung des Projekts zu erreichen.
Hudson betrachtet jeden Projektbuild als eine Aufgabe. Nachdem der Code eines Projekts in SVN (oder jedes andere auf Hudson abgebildete Codeverwaltungstool) eingefügt wurde, beginnt Hudson mit der Build-Aufgabe des Projekts und startet nach Abschluss dieser Build-Aufgabe automatisch die Build-Aufgaben anderer abhängiger Projekte (Build-Aufgaben anderer abhängiger Projekte).
Im obigen Beispiel wird bus-core-Nachdem die ui-Quellcode nach der SVN-Aktualisierung aktualisiert wurde, beginnt Hudson mit dem Projektbuild. Sobald das Build erfolgreich ist, beginnt Hudson automatisch, die abhängigen Projekte zu suchen und das App zu bauen-web-ui und app-desktop-ui-Projekt.