📜  Maven-构建自动化

📅  最后修改于: 2020-11-12 04:56:17             🧑  作者: Mango


Build Automation定义了一个方案,一旦项目构建成功完成,相关项目的构建过程就会开始,以确保相关项目的稳定性。

考虑一个团队正在开发项目bus-core-api ,其他两个项目app-web-uiapp-desktop-ui都依赖于该项目。

app-web-ui项目正在使用bus-core-api项目的1.0-SNAPSHOT。


   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-SNAPSHOT。


   4.0.0
   app_desktop_ui
   app_desktop_ui
   1.0
   jar
   app_desktop_ui
   http://maven.apache.org
   
      UTF-8
   
   
      
         junit
         junit
         3.8.1
         test
      
      
         bus_core_api
         bus_core_api
         1.0-SNAPSHOT
         system
         C:\MVN\bus_core_api\target\bus_core_api-1.0-SNAPSHOT.jar
      
   

bus-core-api项目-


   4.0.0
   bus_core_api
   bus_core_api
   1.0-SNAPSHOT
   jar   

现在, app-web-uiapp-desktop-ui项目团队要求每当bus-core-api项目更改时,其构建过程就应该开始。

使用快照可确保使用最新的bus-core-api项目,但要满足上述要求,我们需要做一些额外的工作。

我们可以通过以下两种方式进行处理-

  • 在bus-core-api pom中添加构建后目标,以启动app-web-uiapp-desktop-ui构建。

  • 使用像Hudson这样的持续集成(CI)服务器来自动管理构建自动化。

使用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
               
            
         
         
      
   

让我们打开命令控制台,转到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 Server更可取。它不需要更新总线核心API项目,每一个新的项目(例如,应用程序-移动UI)添加时间的推移,在总线核心API项目相关的项目。 Hudsion是一个用Java编写的持续集成工具,它在servlet容器中,例如Apache tomcat和glassfish应用服务器。 Hudson使用Maven依赖管理自动管理构建自动化。以下快照将定义Hudson工具的角色。

自动构建

哈德森认为每个项目的建设都是工作。将项目代码签入SVN(或映射到Hudson的任何源管理工具)后,Hudson将开始其构建作业,一旦完成该作业,它将自动启动其他从属作业(其他从属项目)。

在上面的示例中,当在SVN中更新bus-core-ui源代码时,Hudson开始其构建。构建成功后,Hudson会自动查找相关项目,并开始构建app-web-uiapp-desktop-ui项目。