自动化构建工具~Maven
自动化构建工具~Maven
一、目前框架需要的技术
二、目前的技术在开发的过程中存在的问题
2.1 一个项目就是一个工程
- 如果项目非常庞大,不适合继续使用package来划分模块,最好是每个模块对应一个工程,利于分工协作。
- 借助于Maven可以实现一个项目拆分成多个工程
2.2 项目中需要的jar包必须手动复制、粘贴、到WEB-INF/lib目录下
- 带来的问题是:同样的jar包文件重复出现在不同的项目工程中,一方面浪费存储空间,另外也让工程比较臃肿
- 借助Maven,可以将jar包仅仅保持在“仓库”中,有需要使用的工程引用这个文件接口,并需要真的把jar包复制过来。
2.3 jar包需要别人为我们准备好,或者官网下载
- 不同技术的官网提供的jar包下载形式是五花八门。
- 有些技术的官网就是通过Maven或者SVN等工具进行下载的。
2.4 一个jar包依赖的其他jar包需要自己手动加入到项目中
- FileUpload文件上传->IO组件,commons-fileupload-1.3.jar依赖于commons-io-2.0.1.jar。
- 所有jar之间的依赖关系,程序员自我了解,增加学习成本。
- Maven会自动将依赖的jar包导入进来。
三、 Maven是什么
Maven是一款服务于Java平台的自动化构建工具
- Make->ant->Maven->Gradle
3.1 Maven的构建
-
编译过程
- Java源文件(.java)->编译->字节码文件(.class)->交给JVM执行
-
部署
- 一个BS项目最终运行并不是动态WEB本身,而是这个动态Web工程“编译的结果”
- 动态Web工程->编译、部署->编译结果
-
搭建
3.2 构建过程中的各个环节
- 清理:将以前编译得到的旧的class字节码文件删除,为下一次编译做准备
- 编译:将Java源程序编程class字节码文件
- 测试:自动测试,调用junit程序
- 报告:测试程序执行的结果
- 打包:动态web工程打成war包,Java工程打jar包
- 安装:Maven特定的概念--将打包得到的文件复制到仓库中的指定位置
- 部署:将动态web工程生产的war包复制到Servlet容器的指定目录下,使其可以运行。
3.3 安装Maven核心程序
- 检查JAVA_HOME环境变量
- 解压Maven核心程序
- 配置环境变量
- 验证
3.4 Maven的核心概念
-
约定的目录结构
-
POM
- pom.xml是Maven工程的核心配置文件
-
坐标
- 由三个关键来确定,groupId、artifactId、version
- 分别是公司或组织名+项目名、模块名、版本号
- 其中坐标和仓库路径:groupId/artifactId/version/artifactId+version.jar
-
依赖
-
Maven解析依赖时会到本地仓库中进行查找依赖的包
- 对于我们自己开发的包,需要使用mvn install命令安装后可以进入仓库
-
依赖的范围
-
1 compile
-
对主程序是否有效 --有效
-
对测试程序是否有效 --有效
-
是否参与打包 --参与
-
-
2 test
- 对主程序是否有效 --无效
- 对测试程序是否有效 --有效
- 是否参与打包 --不参与
- 典型例子:junit
-
3 provided
- 对主程序是否有效 --有效
- 对测试程序是否有效 --有效
- 是否参与打包 --不参与,不参与部署
- 典型例子:servlet-api.jar
-
-
仓库
- 仓库的分类
- 本地仓库:当前电脑中部署的仓库
- 远程仓库
- 私服:搭建在局域网中,为局域网中所有Maven工程服务
- 中央仓库:架设在Internet上,为全世界的Maven工程提供服务
- 中央仓库镜像:架设在各个大洲的,为中央仓库分担流量的,减轻中央仓库的压力,更快响应用户的请求。
- 仓库中保存的内容:仓库中保存的都是Maven工程
- Maven自身所需要的插件
- 第三方框架或工具的jar包
- 我们自己开发的Maven工程
- 仓库的分类
-
生命周期/插件/目标
-
继承
-
聚合
四、Maven工程
4.1 约定的目录结构
- 1 根目录:工程名
- 2 src目录:源码
- 3 pom.xml文件:Maven工程的核心配置文件
- 4 main目录:存放主程序
- 5 test目录:存放测试程序
- 6 Java目录:Java源文件
- 7 resources目录:存放框架或其他工具的配置文件
4.2、为什么要遵守约定的目录结构
- Maven负责项目的自动构建
- 约定>配置>编码
五、 常用Maven命令
5.1 注意:执行与构建过程相关的Maven命令,必须进入pom.xml所在的目录
- 与构建过程相关:编译、测试、打包......
5.2 常用的命令
- mvn clean:清理
- mvn compile:编译主程序
- mvn test-compile:编译测试程序
- mvn test:执行测试
- mvn package:打包
- mvn install:安装包至仓库
- mvn site:生产站点
六、 关于Maven联网的问题
- 1 Maven的核心程序中仅仅定义了抽象的生命周期,但具体的工作必须由特定的插件来完成,而插件本身并不包含在Maven的核心程序中
- 2 当我的Maven命令需要某些插件时,Maven核心程序会首先到本地仓库中查找
- 3 本地仓库的默认位置:C:\Users\LJLRY.m2\repository
- 4 Maven核心程序如果在本地仓库中找不到需要的插件,那么会自动的到中央仓库进行下载
- 5 如果此时无法连接外网,则构建失败
- 6 修改本地默认的仓库位置