`
yaofeng928
  • 浏览: 7379 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

JavaEE项目开发持续集成方案参考

 
阅读更多

 

服务器资源:

  1. 版本控制服务器:MercurialServer * 2——可以实现实时热备
  2. 依赖包管理服务器:Nexus——提供内网的jar包自动下载
  3. 持续集成服务器:Hudson——提供自动化的持续集成服务


测试驱动开发模型(TDD):

  1. 在详细设计的基础上定义完善的接口,并详细填写接口的注视,包括方法的输入输出、业务逻辑等
  2. 编写接口实现类之前首先要按照接口的定义编写该实现类的单元测试类
  3. 提交代码时要将实现类的单元测试类一同提交


版本库的实时热备:

  1. 为什么要进行实时热备?
    • “热备”是指不暂停服务对服务器进行备份,这要可以在备份时不影响服务正常使用;
    • “实时热备”是指服务器发生变法时立即将改动备份到备份服务器中,这样无论服务器何时出现问题,代码都不会出现丢失,降低开发过程中的风险。
  2. 如何实现版本库的实时热备?
    • “热备”比较简单,基本上所有常见的版本库(Git、Mercurial、SVN、CVS、CC、SS等)都可以不间断服务进行版本库的备份;
    • “实时”这个要求复杂很多,既然是实时的,那么要求每次备份都是轻量级的,要在很短时间内完成,这就要求服务器要支持“增量方式”备份;
    • “增量”备份的问题:对于传统的集中式版本库来讲,实现“增量方式”备份基本上已经可以满足“实时热备”的需求了,但是一旦版本库真正出现了问题,从备份中恢复将是一个灾难性的工作,为了达到“实时”备份,可能每分钟就会产生一个增量包,长期下来增量包的数量是无法控制的,所以对于集中式版本库的“实时热备”只是理论上可以实现罢了,并没有实际意义;
    • 比“增量方式”更优美的方式:相对于集中式版本库而言,分布式版本库的“同步”概念真正实现了“实时热备”的要求,我们可以建立任意多个版本库服务器,让它们实时同步,任何一台服务器出现问题,其它的服务器都可以立即接管服务,不但实现了“实时热备”,还可以0时间恢复故障。
  3. 版本库服务器的选择:
    • 首先基于以上需求的考虑,分布式版本库更加适合,因此Git和Mercurial成为了首选;
    • 其次Git主要用于Linux下的开发,目前版本对Windows下的中文文件名支持尚存在一些问题,所以将采用Mercurial作为版本库服务器。
  4. 实现Mercurial服务器双机实时热备的步骤:
    1. 部署2台MercurialServer服务器,并同时开启SSH服务,并要求2台服务器的网络互通;
    2. 2台版本控制服务器中的一台作为对外服务的版本库(简称主机),并对其设置权限控制;另外一台作为备份服务器(简称备机),不对外开放权限;
    3. 在主机中为备机分配主机的读权限;
    4. 在备机的crontab中设置每分钟或每10分钟(按实际需求)调用脚本从主机拉(pull)数据。


依赖包管理:

  1. 使用中央仓库已经足够了,为什么还要搭建自己的仓库管理器?
    1. 未使用本地仓库管理器
    2. 使用本地仓库管理器
    3. 中央仓库的资源很丰富,基本上所有的开源jar包都可以找到,但是涉及到版权问题的jar包在中央仓库是没有的,比如Oracle的JDBC;
    4. 项目成员都使用中央仓库会导致相同的jar包被重复下载,这大大降低了构建的效率,同时既浪费了自己的带宽有浪费了中央仓库的带宽;
    5. 由于每次构建都要访问中央仓库,一旦网络出现问题将无法构建,这也为项目开发带来了风险;
    6. 与第3点类似,项目开发过程中可以用到自己开发的一些jar包,这些jar包在中央仓库也是没有的。
  2. 仓库管理器的选择:
    • 综上所述,搭建本地仓库是必须的,那么怎样搭建本地版本仓库呢?开源的仓库管理器有很多,常用的有Artifactory、Nexus等。不同的仓库管理器使用方法没有任何不同,都与中央仓库是一样的,只是访问地址不同而已,但是不同的仓库管理器的安装和管理却不尽相同。综合易用性、可靠性等因素的考虑,这里采用Nexus作为本地的仓库管理器。
  3. 下载地址:


持续集成:

  1. 持续集成能做些什么?
    1. 定期从版本控制服务器中拉取最新代码
    2. 对最新代码进行编译,编译过程中需要用到的依赖包自动从依赖包管理服务器中下载
    3. 自动执行最新代码中的单元测试代码,并生成测试报告
    4. 当编译不通过或单元测试不同过时,自动发送错误信息或测试报告给最后提交代码的开发人员
    5. 如果编译通过并且单元测试也通过时,自动对程序进行打包归档
    6. 对打包后的程序进行部署
  2. 持续集成服务器的搭建:
    • 一切从简:
      1. 下载完成的集成环境虚拟机:http://susestudio.com/search?q=hudson
      2. 配置网络连接
    • 自己动手:
      1. 从网站http://hudson-ci.org/下载最先稳定版本;
      2. 准备一台Linux服务器,安装java、tomcat、mavne、mercurial;
      3. 将下载的hudson.war部署到tomcat中
  3. 管理Hudson服务器:
    1. 访问http://服务器IP:8080/hudson/,打开hudson首页
    2. Hudson的功能丰富,文档全面,具体使用方法参考官方文档:http://hudson-ci.org/
  4. Hudson中常用工具:
    • 代码覆盖率检测工具——clover2:该工具的使用是在maven工程中进行插件配置,并将插件的调用设置到特定的生命周期,hudson构建后会生成代码覆盖率报告 
分享到:
评论

相关推荐

    50632135002173628_基于JAVAEE项目管理信息化系统设计与实现0515.zip

    8. **项目管理工具**:如Maven或Gradle用于构建管理,Git进行版本控制,Jenkins或持续集成工具进行自动化部署。 9. **最佳实践**:文档可能还会涉及代码规范、日志管理、异常处理等方面的最佳实践,以提升系统质量...

    基于JavaEE的网上书店项目(完整代码+sql文件)

    同时,为了保证代码质量,可能还使用了单元测试框架如JUnit,以及持续集成工具如Jenkins。 总的来说,基于JavaEE的网上书店项目是一个涵盖了前端展示、后端业务逻辑、数据库操作、用户认证与授权、第三方服务集成等...

    基于Springboot的家电销售展示平台(有报告) Javaee项目,springboot项目

    10. **持续集成/持续部署(CI/CD)**:使用Jenkins、GitLab CI/CD等工具实现自动化构建和部署。 11. **文档编写**:项目附带的“报告”可能包含需求分析、系统设计、技术选型、功能实现、测试结果等内容,是项目开发...

    基于Springboot的高校物品捐赠管理系统(有报告) Javaee项目,springboot项目

    8. **部署与运维**:可能涉及Docker容器化部署、持续集成/持续部署(CI/CD)工具的使用。 这个项目对于学习和理解Spring Boot在实际业务中的应用非常有价值,不仅可以提升开发者的技术能力,还可以了解到完整的项目...

    开发完整J2EE解决方案的八个步骤

    J2EE解决方案的开发过程通常遵循一套结构化的方法论,以确保项目的高效进行。本文将介绍一个基于Rational Unified Process(RUP)和BluePrints的八步法,以帮助理解J2EE的关键主题并应用于实际项目。 1、需求分析 ...

    基于Springboot的社区医疗服务系统(有报告) Javaee项目,springboot项目

    综上所述,这个基于Spring Boot的社区医疗服务系统展示了如何运用现代化的JavaEE技术解决实际问题,涵盖了从后端开发到前端交互、从数据库设计到系统安全、从功能实现到持续集成的完整流程。对于学习和实践Spring ...

    ssm+vue的实验室课程管理系统(有报告) Javaee项目,ssm vue前后端分离项目

    SSM是Spring、Spring MVC和MyBatis的组合,是JavaEE开发中的主流框架。Spring作为基础框架,负责依赖注入和事务管理;Spring MVC处理HTTP请求,实现MVC设计模式;MyBatis则作为持久层框架,简化了数据库操作。在这...

    基于Springboot的一站式家装服务管理系统(有报告) Javaee项目,springboot项目

    在本项目中,“一站式家装服务管理系统”充分利用了Spring Boot的优势,构建了一个高效、易维护的系统,旨在提供全面的家装服务管理解决方案。 该系统的核心目标是简化家装行业的业务流程,整合资源,提升服务质量...

    基于Springboot的书籍学习平台(有报告) Javaee项目,springboot项目

    10. **持续集成/持续部署(CI/CD)**:可能涉及到Jenkins、GitLab CI/CD或其他工具的配置,自动化构建和部署流程。 通过研究这个项目,开发者不仅可以提升Spring Boot的实战技能,还能了解到如何构建一个完整的Web...

    基于Springboot的牙科就诊管理系统(有报告) Javaee项目,springboot项目

    系统开发过程中,持续集成和自动化测试也是必不可少的环节。可能采用了Maven或Gradle作为构建工具,配合Junit进行单元测试,保证代码质量。同时,使用Git进行版本控制,便于团队协作和代码管理。 总的来说,这个...

    javaEE健康管理系统.rar

    论文资料和视频讲解可能涵盖了系统设计的理论基础、开发过程以及遇到的技术问题和解决方案,这对于学习和理解整个项目的开发流程极具价值。学习路线和参考词汇则为初学者提供了学习路径和专业术语的指引,帮助他们更...

    基于JAVAEE MVC的餐饮管理系统源码.zip

    这个源码实例对于学习和提升JAVAEE开发技能,特别是MVC模式的实践应用,具有很高的参考价值。同时,对于想要从事IT行业,特别是Web开发的人员来说,这是一个极好的学习资源,可以帮助他们更好地理解和掌握企业级项目...

    基于JavaEE的旅游网站-基于SpringBoot的旅游管理系统论文参考

    本毕业设计项目旨在构建一个基于JavaEE的旅游网站,以满足日益增长的旅游需求。设计过程中,遵循软件工程的理论和方法,从引言、技术介绍、系统分析、系统设计、系统实现和系统测试等多方面进行详细阐述。首先,对...

    Spring side4

    7. 持续集成:项目包含了持续集成的最佳实践,如使用Maven进行构建管理,Git进行版本控制,Jenkins进行持续集成和自动化部署,这些工具的整合使用可以提升开发团队的协作效率。 8. 构建工具:Maven作为主要的构建...

    开题报告-基于JavaEE技术的学生宿舍管理系统.docx

    预计完成一个功能完备、操作简便、安全可靠的JavaEE学生宿舍管理系统,包括宿舍分配、人员管理、资源预订、异常报警等功能模块,为高校宿舍管理提供现代化的解决方案。同时,通过对系统的持续优化和升级,以适应不断...

    轻量级javaEE企业应用实战(第三版)源代码.part3.rar

    《轻量级Java EE企业应用实战(第三版)》是一本深入浅出的软件开发教材,专注于Java EE技术在实际企业应用中的...对于遇到的问题,可以参考书籍中的指导或在线搜索解决方案,持续学习和探索,不断提升自己的专业素养。

    study-web-backend.zip

    9. **测试与调试**: 开发过程中,单元测试、集成测试和持续集成是不可或缺的环节。JUnit用于编写Java的单元测试,Mockito可以帮助模拟对象进行测试。而IDE如IntelliJ IDEA或Eclipse内置的调试工具则能方便地定位和...

    开题报告ssm105基于JAVAEE技术校园车辆管理系统+jsp开题.docx

    6. 通过持续集成/持续部署(CI/CD)工具,自动化构建和部署流程。 五、研究计划与进度安排 1. 需求分析与系统设计(第1-2周) 2. 技术选型与环境搭建(第3周) 3. 模块开发(第4-8周) 4. 系统集成与测试(第9-11...

    springside4-master

    总的来说,SpringSide4-Master是JavaEE开发者的宝贵参考资料,通过这个项目,开发者可以深入理解Spring Framework,并掌握一套完整的JavaEE开发流程和最佳实践。无论是初学者还是经验丰富的开发者,都能从中受益匪浅...

    MyClouds开发指南(非官方)

    10. **持续集成/持续部署(CI/CD)**:MyClouds可能支持与Jenkins、GitLab CI/CD等工具集成,实现代码自动构建、测试和部署,从而加速软件交付周期。 通过深入学习《MyClouds开发指南》,开发者可以充分利用...

Global site tag (gtag.js) - Google Analytics