- Maven 教程
- Maven - 首页
- Maven - 概述
- Maven - 环境搭建
- Maven - POM
- Maven - 构建生命周期
- Maven - 构建配置文件
- Maven - 仓库
- Maven - 插件
- Maven - 创建项目
- Maven - 构建和测试项目
- Maven - 外部依赖
- Maven - 项目文档
- Maven - 项目模板
- Maven - 快照
- Maven - 构建自动化
- Maven - 管理依赖
- Maven - 部署自动化
- Maven - Web 应用程序
- Maven - Eclipse IDE
- Maven - NetBeans
- Maven - IntelliJ IDEA
- Maven 有用资源
- Maven - 问答
- Maven - 快速指南
- Maven - 有用资源
- Maven - 讨论
Maven - 构建自动化
构建自动化定义了一种场景,其中一旦项目构建成功完成,就会启动依赖项目(s)的构建过程,以确保依赖项目(s)是稳定的。
示例
假设一个团队正在开发一个名为bus-core-api的项目,另外两个项目app-web-ui和app-desktop-ui依赖于它。
app-web-ui项目使用bus-core-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-core-api</groupId> <artifactId>bus-core-api</artifactId> <version>1.0-SNAPSHOT</version> </dependency> </dependencies> </project>
app-desktop-ui项目使用bus-core-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_desktop_ui</groupId> <artifactId>app_desktop_ui</artifactId> <version>1.0</version> <packaging>jar</packaging> <name>app_desktop_ui</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>bus_core_api</groupId> <artifactId>bus_core_api</artifactId> <version>1.0-SNAPSHOT</version> <scope>system</scope> <systemPath>C:\MVN\bus_core_api\target\bus_core_api-1.0-SNAPSHOT.jar</systemPath> </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项目,但要满足上述要求,我们需要做一些额外的事情。
我们可以通过以下两种方式进行操作 -
在bus-core-api的pom中添加一个构建后目标,以启动app-web-ui和app-desktop-ui的构建。
使用持续集成(CI)服务器(如Hudson)自动管理构建自动化。
使用Maven
更新bus-core-api项目的pom.xml。
<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目录,并执行以下mvn命令。
>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] -------------------------------------------------------------------
使用持续集成服务与Maven
使用CI服务器对于开发人员来说更可取。不需要每次添加新的项目(例如,app-mobile-ui)作为bus-core-api项目的依赖项目时都更新bus-core-api项目。Hudsion是一个用Java编写的持续集成工具,它运行在servlet容器中,例如Apache tomcat和glassfish应用程序服务器。Hudson使用Maven依赖管理自动管理构建自动化。以下快照将定义Hudson工具的作用。
Hudson将每个项目的构建视为一个作业。一旦项目的代码被签入SVN(或映射到Hudson的任何源代码管理工具),Hudson就会启动其构建作业,一旦该作业完成,它就会自动启动其他依赖作业(其他依赖项目)。
在上面的示例中,当bus-core-ui源代码在SVN中更新时,Hudson会启动其构建。构建成功后,Hudson会自动查找依赖项目,并开始构建app-web-ui和app-desktop-ui项目。