Maven学习笔记整理
(一)Maven的作用
-
Maven是由Java代码编写的 项目管理及自动构建工具 适合于一个团队对项目进行管理和版本的迭代,如果项目 非常大则不适合使用包来划分模块,改为每一个模块一个工程,使用Maven将其拆分,以区分版本号和不同模块组件。
-
在以往的web项目中,所需要的jar包都需要手动导入到WEB-INF/lib目录下,还要将jar包添加到类路径下,浪费时间还占用存储空间。 Maven可以通过POM.XML 项目对象模型(Project Object Model缩写:POM) 文件从仓库中引用需要的jar包,并不需要真正的把jar包复 制到项目中。
-
在一个项目中不同的开发人员所使用的jar包可能版本不一致,导致项目在不同服务器上运行结果不一样。 Maven可以规范 化每个人的jar包版本,因为Maven将知名框架和第三方工具的jar存在中央仓库中,所以开发人员通过maven取出来的jar包也是规 范可靠的。
-
有时不同的jar包之间存在互相依赖关系,例如spring框架中spring-beans.jar,spring-aop.jar,spring-context.jar等 都需要spring-core.jar的支持,但是开发人员无法完全了解各个jar包之间的依赖关系。 Maven会将被依赖的jar包自动导入到仓库中,以供 开发人员使用,极大减少了学习的成本。
(二)Maven的安装配置
网上有很多教程,下面是我参考的一个博客的教程 在这里
(三)Maven的核心概念
-
Maven作为规范化的管理工具自然少不了规范化的目录结构,刚开始接触Maven的时候建议手动搭建目录结构以此来熟悉Maven的概念 目录如下
-
POM.xml文件Maven项目中不可或缺的核心文件,构建项目过程中的所有设置都在这个文件中进行配置 包括项目的名称
<groupid>
,模块<artifactid>
,版本<version>
,jar包依赖<dependency>
-
常用的Maven命令
- mvn -v 获取当前maven的版本
- mvn compile 编译java文件
- mvn test 测试,并生成测试报告
- mvn clean 删除旧的class文件
- mvn package 打包成为jar包,war包
- mvn install 将包放入到本地仓库中
tips:2~6阶段需要进入pom.xml所在的路径下才能执行
-
Maven的坐标,类似于数学中的坐标,maven通过三个值来定位某一个jar在仓库中的位置
<dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency>
以上代码定位了servle-api-2.5.jar的位置,Maven会沿着这个路径去找这个jar包如果本地仓库没有,则会到远程仓库中进行寻找并下载。
- Maven的生命周期是由几个阶段构成的,他们的顺序无法被打乱,必须按照正确顺序来执行,每个生命周期中的具体任务是由插件来完成的
- 生命周期
- compile编译阶段 java代码到后缀为.class文件
- test测试阶段 使用单元测试测试编译的代码
- package打包阶段 将编译的代码打包成jar,war等格式
- install安装阶段 将打好的包保存到本地仓库(一般是C盘User文件夹下的 .m2 文件夹)此时其他maven项目可以引用此项目
- deploy部署阶段 将包复制到远程仓库和其他开发人员共享
tips:测试类不参与打包和部署 所以看不到测试类编译的.class文件
由于生命周期的限制如果进入对应项目pom.xml的路径后跳过某些周期直接执行后面的步骤,例:
>mvn test
Maven依旧会从第一步开始执行,这也表现出Maven的规范化
如下图
首先编译源代码,在编译test代码,再执行测试返回结果