Maven项目管理工具
一、Maven概述[了解]
1.问题引入
l 目前存在的问题
运用我们目前学习的技术已经可以开发一个小型的项目了,但是在实际开发中,我们的项目规模要复杂的多,遇到的问题也更多!比如:
1、jar包的管理:多个项目依赖同一个jar包,要复制多次,jar升级时又得重新复制多次,jar之间还可能有多重依赖关系,容易管理混乱
2、项目的管理:项目规模越来越大,需要拆分成多个子模块,模块之间的相互依赖关系需要统一管理,并且项目生命周期中的编译,打包,测试,运行等步骤都需要统一管理
l 如何解决?
开发一个工具对jar包和项目进行统一的管理,比如:
把jar包都编个座标,记录并存放在一个地方(这个地方称作为仓库),项目中要用哪个jar就根据座标来仓库中找就行了;
对项目生命周期和模块进行统一管理,能够自动化的执行编译,打包,测试,运行等操作。
而我们想到的这些解决方案,早就有大牛帮我们实现好了,那就是Maven!
总结:通俗的说:maven就是用来管理jar包+管理项目
注意:这些工具都是帮助/辅助我们工作的,我们最终的开发产出物都是代码
2.初识Maven
l 官网
l 百科介绍
l 说人话
Maven是一个项目管理工具,可以对项目和jar包进行统一个管理,包括:项目的构建(执行项目的生命周期)、项目的生命周期(编译、测试、打包、部署等)、项目的模块依赖关系和jar包的依赖关系
l Jar包管理
l 自动化的项目构建
3.Maven的相关概念
(1)项目对象模型(POM)
Project Object Model:POM对象模型,其实就是一个xml文件,名字叫做pom.xml,每个Maven工程中都有一个pom.xml文件,定义工程(所依赖的jar包)、(本工程的座标、打包(jar/war)运行方式)。
Maven通过座标对项目工程所依赖的jar包统一规范管理
企业使用时,也叫做GAV座标
Maven的座标使用如下三个量在 Maven 的仓库中唯一的确定一个jar。
[1] groupid:公司或组织的域名倒序+[当前项目名称]
[2] artifactId:当前项目的模块名称
[3] version:当前模块的版本
例如:要引入junit的测试jar,只需要在pom.xml配置文件中配置引入junit的座标即可
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
(2)生命周期
l 清理、编译、测试、报告 、打包、部署、站点生成。
①清理:删除以前的编译结果,为重新编译做好准备。
②编译:将Java 源程序编译为字节码文件。
③测试:针对项目中的关键点进行测试,确保项目在迭代开发过程中关键点的正确性。
④报告:在每一次测试后以标准的格式记录和展示测试结果。
⑤打包:将一个包含诸多文件的工程封装为一个压缩文件用于安装或部署。Java 工程对应 jar 包,Web工程对应 war 包。
⑥安装:在 Maven 环境下特指将打包的结果——jar 包安装到本地仓库中或把 war包安装到web容器中。
⑦部署:将打包的结果部署到远程仓库或将war包部署到服务器上运行。
(3)Maven项目标准目录结构
Maven是约定思想的体现,约定>配置>编程,maven之前有一个ant工具(告诉它你的源代码在哪个路径下,然后编译输出到哪个路径)
l Maven工程有自己标准的目录结构。
而 Maven 正是因为指定了特定目录保存文件才能够对我们的 Java 工程进行自动化构建(就是自动执行上面的生命周期)。
l 标准目录结构示例
Project
|-src
| |-main
| | |-java —— 存放项目的.java文件
| | |-resources ——存放项目资源文件,如spring, hibernate配置文件
|-webapp —— webapp目录是web工程的主目录
|-WEB-INF
|-web.xml
| |-test
| |-java —— 存放所有测试.java文件,如JUnit测试类
| |-resources —— 测试资源文件
|-target ——目标文件输出位置例如.class、.jar、.war文件
|-pom.xml ——maven项目核心配置文件
(4)Maven插件
maven 管理项目生命周期过程都是基于插件完成的,例如:开发中使用的tomcat插件。
(5)Maven仓库
仓库名称 | 作用 |
---|---|
本地仓库 | 相当于缓存,工程第一次会从远程仓库(互联网)去下载jar 包,将jar包存在本地仓库(在程序员的电脑上)。第二次不需要从远程仓库去下载。先从本地仓库找,如果找不到才会去远程仓库找。 |
中央仓库(远程仓库) | 是一种远程仓库,仓库中的jar包由专业团队(maven团队)统一维护。里面存放了全世界大多数流行开源软件jar包中央仓库的地址:http://mvnrepository.com/tags/maven |
私服(远程仓库) | 在公司内部架设一台私服,其它公司架设一台仓库,对外公开。 |
4.使用Maven的好处
通过上边介绍传统项目和maven项目在项目构建及依赖管理方面的区别,maven有如下的好处:
1、自动构建(生命周期管理):maven对项目构建的过程进行标准化,通过一个命令即可完成构建过程。
2、依赖管理:maven工程不用手动导jar包,通过在pom.xml中定义座标从maven仓库自动下载,方便且不易出错。
3、跨平台:maven命令可在window、linux上使用,命令无差别。
4、提升效率:遵循maven规范开发有利于提高大型团队的开发效率,降低项目的维护成本,大公司都会考虑使用maven来构建项目。