maven 自动化构建——迹忆客-ag捕鱼王app官网
自动化构建定义了这样一种场景: 在一个项目成功构建完成后,其相关的依赖工程即开始构建,这样可以保证其依赖项目的稳定。
比如一个团队正在开发一个项目 bus-core-api, 并且有其他两个项目 app-web-ui 和 app-desktop-ui 依赖于这个项目。
app-web-ui 项目使用的是 bus-core-api 项目的 1.0 快照:
4.0.0
app-web-ui
app-web-ui
1.0
jar
bus-core-api
bus-core-api
1.0-snapshot
app-desktop-ui 项目使用的是 bus-core-api 项目的 1.0 快照:
4.0.0
app-desktop-ui
app-desktop-ui
1.0
jar
bus-core-api
bus-core-api
1.0-snapshot
bus-core-api 项目:
4.0.0
bus-core-api
bus-core-api
1.0-snapshot
jar
现在 app-web-ui 和 app-desktop-ui 项目的团队要求不管 bus-core-api 项目何时变化,他们的构建过程都应当可以启动。
使用快照可以确保最新的 bus-core-api 项目被使用,但要达到上面的要求,我们还需要做一些额外的工作。
可以使用两种方式:
- 在 bus-core-api 项目的 pom 文件中添加一个 post-build 目标操作来启动 app-web-ui 和 app-desktop-ui 项目的构建。
- 使用持续集成(ci) 服务器,比如 hudson,来自行管理构建自动化。
使用 maven
修改 bus-core-api 项目的 pom.xml 文件。
4.0.0
bus-core-api
bus-core-api
1.0-snapshot
jar
maven-invoker-plugin
1.6
true
app-web-ui/pom.xml
app-desktop-ui/pom.xml
build
run
打开命令控制台,切换到 /workspace/java/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: /workspace/java/app-web-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: /workspace/java/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: /workspace/java/app-web-ui/target/
app-desktop-ui-1.0-snapshot.jar
[info] -------------------------------------------------------------------
[info] build successful
[info] -------------------------------------------------------------------
使用持续集成服务器(ci)
如果使用 ci 服务器更,我们每次的一个新项目,比如说实例中的 app-mobile-ui,添加为依赖 bus-core-api 项目时,开发者就不需要更新 bus-core-api 项目的 pom。hudson 将会借助 maven 的依赖管理功能实现工程的自动化创建。
hudson 把每个项目构建当成一次任务。在一个项目的代码提交到 svn (或者任何映射到 hudson 的代码管理工具)后,hudson 将开始项目的构建任务,并且一旦此构建任务完成,hudson 将自动启动其他依赖的构建任务(其他依赖项目的构建)。
在上面的例子中,当 bus-core-ui 源代码在 svn 更新后,hudson 开始项目构建。一旦构建成功,hudson 自动地查找依赖的项目,然后开始构建 app-web-ui 和 app-desktop-ui 项目。