English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
la definición de construcción automatizada define un escenario: después de que se completa la construcción de un proyecto, inician la construcción de sus dependencias relacionadas, lo que asegura la estabilidad de los proyectos dependientes.
por ejemplo, un equipo está desarrollando un proyecto bus-Núcleo-api, y otros dos proyectos app-web-ui y app-Escritorio-el proyecto ui depende de este proyecto.
app-web-el proyecto ui utiliza el bus-Núcleo-el proyecto api 1.0 snapshot:
<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-Núcleo-api</groupId> <artifactId>bus-Núcleo-api</artifactId> <version>1.0-SNAPSHOT</version> </dependency> </dependencies> </project>
app-Escritorio-el proyecto ui utiliza el bus-Núcleo-el proyecto api 1.0 snapshot:
<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-Escritorio-ui</groupId> <artifactId>app-Escritorio-ui</artifactId> <version>1.0</version> <packaging>jar</packaging> <dependencies> <dependency> <groupId>bus-Núcleo-api</groupId> <artifactId>bus-Núcleo-api</artifactId> <version>1.0-SNAPSHOT</version> </dependency> </dependencies> </project>
bus-Núcleo-proyecto 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-Núcleo-api</groupId> <artifactId>bus-Núcleo-api</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> </project>
ahora la aplicación-web-ui y app-Escritorio-el equipo del proyecto ui requiere que independientemente del bus-Núcleo-cuando cambia el proyecto api, su proceso de construcción debe poder iniciarse.
usar la versión snapshot puede asegurar el último bus-Núcleo-el proyecto api se utiliza, pero para alcanzar los requisitos anteriores, necesitamos realizar algunas tareas adicionales.
se pueden usar dos métodos:
en el bus-Núcleo-agregar un post en el archivo pom del proyecto api-build la operación objetivo para iniciar la aplicación-web-ui y app-Escritorio-la construcción del proyecto ui.
usar un servidor de integración continua (CI) como Hudson para administrar automáticamente la automatización de la construcción.
modificar bus-Núcleo-el archivo pom.xml del proyecto 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-Núcleo-api</groupId> <artifactId>bus-Núcleo-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-Escritorio-ui/pom.xml</pomInclude> </pomIncludes> </configuration> <executions> <execution> <id>build</id> <goals> <goal>run</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project>
Abrir la consola de comandos, cambiar a C:\ > MVN > bus-Núcleo-en el directorio api, luego ejecutar el siguiente comando.
C:\MVN\bus-Núcleo-api>mvn limpiar paquetizar -U
Después de ejecutar el comando, Maven comenzará a construir el proyecto bus-Núcleo-api。
[INFO] Escaneando proyectos... [INFO] ------------------------------------------------------------------ [INFO] Construyendo bus-Núcleo-api [INFO] Tarea-segment: [limpiar, paquetizar] [INFO] ------------------------------------------------------------------ ... [INFO] [jar:jar {ejecución: default-} [INFO] Construyendo jar: C:\MVN\bus-Núcleo-ui\target\ bus-Núcleo-ui-1.0-SNAPSHOT.jar [INFO] ------------------------------------------------------------------ [INFO] CONSTRUCCIÓN EXITOSA [INFO] ------------------------------------------------------------------
bus-Núcleo-Después de que la construcción de api tenga éxito, Maven comenzará a construir app-web-Proyecto ui.
[INFO] ------------------------------------------------------------------ [INFO] Construyendo app-web-ui [INFO] Tarea-segmento: [paquete] [INFO] ------------------------------------------------------------------ ... [INFO] [jar:jar {ejecución: default-} [INFO] Construyendo jar: C:\MVN\app-web-ui\target\ app-web-ui-1.0-SNAPSHOT.jar [INFO] ------------------------------------------------------------------ [INFO] CONSTRUCCIÓN EXITOSA [INFO] ------------------------------------------------------------------
app-web-Después de que la construcción de ui tenga éxito, Maven comenzará a construir app-Escritorio-Proyecto ui.
[INFO] ------------------------------------------------------------------ [INFO] Construyendo app-Escritorio-ui [INFO] Tarea-segmento: [paquete] [INFO] ------------------------------------------------------------------ ... [INFO] [jar:jar {ejecución: default-} [INFO] Construyendo jar: C:\MVN\app-Escritorio-ui\target\ app-Escritorio-ui-1.0-SNAPSHOT.jar [INFO] ------------------------------------------------------------------- [INFO] CONSTRUCCIÓN EXITOSA [INFO] -------------------------------------------------------------------
Si se utiliza un servidor de integración continua (CI), cada vez que se crea un nuevo proyecto, por ejemplo, el app en el ejemplo-Móvil-ui, agregar como dependencia bus-Núcleo-al actualizar el proyecto api, los desarrolladores no necesitan actualizar bus-Núcleo-pom del proyecto api. Hudson utilizará la función de gestión de dependencias de Maven para lograr la creación automatizada del proyecto.
Hudson trata cada construcción de proyecto como una tarea. Después de que el código del proyecto se comprometa a SVN (o cualquier herramienta de gestión de código mapeada a Hudson), Hudson comenzará la tarea de construcción del proyecto y, una vez completada esta tarea de construcción, Hudson iniciará automáticamente otras tareas de construcción dependientes (construcción de proyectos dependientes).
En el ejemplo anterior, cuando bus-Núcleo-Después de que el código fuente ui se actualice en SVN, Hudson comienza la construcción del proyecto. Una vez que la construcción tenga éxito, Hudson buscará automáticamente los proyectos dependientes y comenzará a construir el app-web-ui y app-Escritorio-Proyecto ui.