>>分享流行的Java框架以及开源软件,对孙卫琴的《精通Spring》、《Spring Cloud Alibaba微服务开发零基础入门到实操》提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 27659 个阅读者 刷新本主题
 * 贴子主题:  Maven使用指南:自动化构建 回复文章 点赞(0)  收藏  
作者:flybird    发表时间:2019-08-18 14:26:24     消息  查看  搜索  好友  邮件  复制  引用


    自动化构建定义了这样一种场景: 在一个项目成功构建完成后,其相关的依赖工程即开始构建,这样可以保证其依赖项目的稳定。

     比如一个团队正在开发一个项目 bus-core-api, 并且有其他两个项目 app-web-ui 和 app-desktop-ui 依赖于这个项目。

     app-web-ui 项目使用的是 bus-core-api 项目的 1.0 快照:
< 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 快照:


< 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 项目:


< 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 文件中添加一个 post-build 目标操作来启动 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 目录下,然后执行以下命令。

         C:\MVN\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: 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:

[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:

[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] -------------------------------------------------------------------  

使用持续集成服务器(CI)

   如果使用 CI 服务器更,我们每次的一个新项目,比如说范例中的 app-mobile-ui,添加为依赖 bus-core-api 项目时,开发者就不需要更新 bus-core-api 项目的 pom。Hudson 将会借助 Maven 的依赖管理功能实现工程的自动化创建。

  点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小

  Hudson 把每个项目构建当成一次任务。在一个项目的代码提交到 SVN (或者任何映射到 Hudson 的代码管理工具)后,Hudson 将开始项目的构建任务,并且一旦此构建任务完成,Hudson 将自动启动其他依赖的构建任务(其他依赖项目的构建)。

  在上面的例子中,当 bus-core-ui 源代码在 SVN 更新后,Hudson 开始项目构建。一旦构建成功,Hudson 自动地查找依赖的项目,然后开始构建 app-web-ui 和 app-desktop-ui 项目。






程序猿的技术大观园:www.javathinker.net



[这个贴子最后由 flybird 在 2020-02-14 10:12:08 重新编辑]
  Java面向对象编程-->类的生命周期
  JavaWeb开发-->操作符
  JSP与Hibernate开发-->JSP技术详解(Ⅱ)
  Java网络编程-->Servlet技术详解(Ⅱ)
  精通Spring-->Java对象持久化技术概述
  Vue3开发-->映射组成关系
  Redis 超详细总结笔记
  Rust学习笔记 | 异步代码的几种写法
  git 常用指令总结
  微服务架构模型
  使用Spring MVC统一异常处理实战
  Spring MVC文件上传与下载
  Spring MVC实现国际化的几种方式
  Spring Boot、SpringMVC进行i18n国际化支持:使用MessageSou...
  Spring Cloud构建微服务架构的服务注册与发现
  微服务拆分实践
  SpringCloud Gateway-整体流程
  Spring+JPA+ehcache开启二级本地缓存
  Kafka笔记整理
  3分钟让你明白JSON是什么
  RESTful 架构详解
  更多...
 IPIP: 已设置保密
楼主      
该用户目前不在线 nihaota 
  
威望: 0
级别: 新手上路
魅力: 1315
经验: 1315
现金: 2944
发文章数: 243
注册时间: 0001-01-01
 消息  查看  搜索  好友  邮件  复制  引用


讨债公司
发文章时间 2022-10-28 20:56:15
 IPIP: 已设置保密 1 楼     
1页 1条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。