1、maven是什么?
maven是一款服务于Java平台的项目管理软件,换一句话说,是一款自动化构建工具,那什么又是自动化构建呢,使用一些命令可以自动的根据Java源文件、JSP、HTML、图片等资源为原材料去生成一个可以运行的项目的过程。
2、引入maven的目的
没有引入maven之前,传统的开发项目过程中遇到的问题:
a)一个项目就是一个工程,一般使用package来划分模块;
b)工程中需要的Jar包必须手动添加到lib目录中并且其依赖的Jar也需要手动加入
引入maven之后:
a)每个项目中的模块可以为一个工程,可以是用maven中的聚合功能将各模块聚合成一个项目;
b)每个工程所需要的Jar包只需要根据Jar包在本地仓库、私服、中央仓库的坐标来引入即可,不要手动加入Jar和其依赖的Jar包
3、maven自动化构建的主要环节
1、clean:删除以前编译好的结果,为重新编译做好准备
2、compile:将java源程序编译为字节码文件
3、test-compile:针对项目中的关键点进行测试,确保项目在迭代开发过程中关键点的正确性
4、test:在每次测试后以标准的格式记录和展示测试结果
5、package:将maven工程打包成war或者jar包
6、install:maven特定的概念,将打包的文件复制到本次仓库中
7、deploy:将动态的war工程生成的war包复制到servlet容器的指定目录下,使其可以运行
4、maven的常用命令
1、mvn clean
2、mvn compile
3、mvn test-compile
4、mvn test
5、mvn package
6、mvn install
7、mvn site
5、mvn中的核心概念
POM:project object model
pom.xml是maven工程的核心配置文件,与构建过程相关的一切设置都在这个文件进行配置
坐标:表示依赖的对象在仓库中的位置
<groupid> xxx</groupid>
<artifactid>yyy</artifactid>
< version>zzz< /version>
仓库:存放maven内容的地方
内容:
1、maven自身所需要的插件
2、第三方工具框架的jar包
3、我们自己开发的maven工程
类型:
1、本地仓库:存在自己的电脑中
2、远程仓库:
a、私服:公司搭建的局域网范围的
b、中央仓库:架设在互联网上,为全世界的maven工程服务
c、中央仓库镜像:架设在各个大洲,为分担流量。减轻中央仓库的压力
依赖:
maven工程会根据pom.xml中的配置的依赖去仓库中引用所需要的jar包,对于我们自己开发的maven工程,使用mvn install 命令就可以进入本地仓库
依赖的分为:compile、test、runtime、provided
依赖具有传递性
依赖的原则:
路径最短优先原则
路径相同先声明的优先
生命周期:
各个构建环节的执行顺序,不能随意打乱顺序,必须按照既定的正确顺序执行;
maven核心程序中定义了抽象的生命周期,生命周期中的各个阶段的具体任务由maven的插件完成
插件和目标
maven的核心仅仅定义了抽象的生命周期,具体任务由插件完成;
每个插件都能实现多个功能,每个功能就是一个目标;
maven的生命周期与插件目标相互绑定,以完成某个具体任务
继承:
由于非 compile 范围的依赖信息是不能依赖链中传递的,所以有所以有需要的工程只能单独配置。此时如果引入父工程,付工程配置其他工程所需要的jar包等内容,然后其他工程再继承自父工程。
聚合
为什么 要使用聚合?将多个工程拆分为模块后,需要手动逐个安装到仓库后依赖才能够生效。修改源码后也需要逐个手动进行clean操作。而使用了聚合之后就可以批量进行 Maven工程的安装、清理工作。