小阿轩yx-案例:jenkins部署Maven和NodeJS项目
前言
- 在 Java 项目开发中,项目的编译、测试、打包等是比较繁琐的,属于重复劳动的工作,浪费人力和时间成本。
- 以往开发项目时,程序员往往需要花较多的精力在引用 jar 包搭建项目环境上,跨部门甚至跨人员之间的项目结构都有可能不一样。
- Maven 的仓库管理、依赖管理、继承和聚合等特性为项目的构建提供了一整套完善的解决方案。
- 将 Maven 集成到 jenkins 环境中,为开发人员的编译、打包、部署,测试等工作,提供了高效率的集成环境。
开发相关概念
什么是 Maven
- 每一个开发工具(IDE)都有自己不同的项目结构,它们互相之间不通用。
- 比如我在 eclipse 中创建的目录,无法在 idea 中进行使用,这就造成了很大的不方便。
Maven
- 提供了一套标准化的项目结构,所有的 IDE 使用 Maven 构建的项目完全一样,所以 IDE 创建的 Maven 项目可以通用。
- 是 Apache 软件基金会组织维护的一款自动化构建工具,专注服务于 Java 平台的项目构建和依赖管理。
- 这个单词的本意是:专家,内行。
- 读音是 [ 'meɪvn ]。
- Maven 项目对象模型(POM)是可以通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。
Maven 的作用
项目构建
- Maven 自动化 Java 项目的构建过程。
- 它根据预定的生命周期并执行各个生命周期阶段的任务,实现编译、测试、打包等,并确保构建的一致性和可重复性。
依赖管理
- Maven 根据 pom.xml 文件的依赖信息自动下载和管理库和框架。
- 它规范了依赖解析和库搜索过程,避免了版本冲突和传递问题。
项目信息管理
- Maven 利用 pom.xml 文件描述的项目信息生成报告和文档。
- 提高了项目的可读性和可维护性。
插件及扩展
- Maven 通过插件系统实现高度可扩展性。
- 插件增强项目功能,如代码生成、代码质量检查、测试报告等。
多模块项目支持
- Maven 支持创建多模块项目,简化大型项目的组织和管理。
- 多模块项目共享依赖、插件和属性配置,方便项目配置和维护。
持续集成
- Maven 与各种持续集成工具(如 Jenkins、Travis CI等)相结合,实现项目的自动化构建、测试和部署等,有助于提高项目的质量和交付速度。
什么是构建
- 就是以我们编写的 Java 代码、框架配置文件、其他资源文件、JSP 页面和图片等静态资源作为 “原材料”,去 “生产” 出一个可以运行的项目的过程。
构建过程的几个主要环节
- 清理:删除以前的编译结果,为重新编译做好准备。
- 编译:将 Java 源程序编译为字节码文件。
- 测试:针对项目中的关键点进行测试,确保项目在迭代开发过程中关键点的正确性
- 报告:在每一次测试后以标准的格式记录和展示测试结果。
- 打包:将一个包含诸多文件的工程封装为一个压缩文件用于安装或部署。Java 工程对应 jar 包,Web 工程对应 war 包。
- 安装:在 Maven 环境下特指将打包的结果— jar 包或 war 包安装到本地仓库中。
- 部署:将打包的结果部署到远程仓库或将 war 包部署到服务器上运行。
自动化构建
为什么要使用 Maven 这样的构建工具呢?
- 看一个程序员在某一天的工作
- 托马斯像往常一样早早的来到了公司,冲好一杯咖啡,打开了自己的邮箱 -- 很不幸,QA 小组发来了一封邮件,报告了他昨天提交的模块的测试结果 -- 有 BUG。
- “好吧,反正也不是第一 次”,托马斯摇摇头进入 IDE,运行自己的程序,编译、打包、部署到服务器上,然后按照邮件中的操作路径进行测试。
- “嗯没错,这个地方确实有问题”,托马斯说道。
- 于是托马斯开始尝试修复这个 BUG,当他差不多有眉目的时候已经到了午饭时间。
- 下午继续工作。BUG 很快被修正了,接着托马斯对模块重新进行了编译、打包、部署,测试之后确认没有问题了,回复了 QA 小组的邮件。
- 一天就这样过去了,然而第二天、第三天,基本都是这样度过的。
梳理一下托马斯这一天中的工作内容
从中我们发现,托马斯的很大一部分时间花在了 “编译、打包、部署、测试” 这些程序化的工作上面,而真正需要有人接介入实现的分析问题和编码环节其实只占了很少一部分,如下图
能将这些程序化的工作交给机器自动完成么?
- 当然是可以的,这就是自动化构建。
这样构建的流程就成了下图所示的过程
- 此时 Maven 的意义就体现了出来,它可以自动的从构建过程的起点一致执行到终点
Maven 核心 -- pod 文件
- Maven 能够实现自动化构建是和它的内部原理分不开的,而构建过程离不开一个关键对象,就是 pom 文件。
pom
- 全称为 project object model,意思为项目对象模型。
- 通过 xml 表示 maven 项目,使用 pom.xml 来实现。
- pom 文件是 Maven 项目的核心文件之一,包含了 Maven 项目的所有配置信息。
pom 文件
- 是对项目描述:包括配置文件,开发者需要遵循的规则,组织和项目的 url,项目的依赖性,以及其他所有的项目相关因素。
- 是 Maven 的重要组成部分,可以帮助开发者管理和构建项目。
- 使用 Maven 进行项目构建时,需要根据项目的需要配置 pom 文件。
- Maven 借助于这个文件,就可以自动化构建、测试、打包和发布 Java 项目。
Maven 项目自动化部署流程
电子商城项目简介
- 作为后端开发人员,不仅需要开发项目,有时候还需要对项目进行部署,这时就少不了和 Linux 和 Docker 打交道。
mall 商城项目简介
- mall 项目是一套电商系统,包括前台商城系统及后台管理系统,基于SpringBoot+MyBatis 实现,采用 Docker 容器化部署。
- 前台商城系统包含首页门户、商品推荐、商品搜索、商品展示、购物车、订单流程、会员中心、客户服务、帮助中心等模块。
- 后台管理系统包含商品管理、订单管理、会员管理、促销管理、运营管理、内容管理、统计报表、财务管理、权限管理、设置等模块。
系统架构图
业务架构图
设备清单
主机名 | IP 地址 | 软件包 |