Maven项目管理工具概述(一)

Maven项目管理工具

一、Maven概述[了解]

1.问题引入

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IFD4AnUp-1593161829374)(../img-folder/Maven/1576483068494.png)]

l 目前存在的问题

运用我们目前学习的技术已经可以开发一个小型的项目了,但是在实际开发中,我们的项目规模要复杂的多,遇到的问题也更多!比如:

1、jar包的管理:多个项目依赖同一个jar包,要复制多次,jar升级时又得重新复制多次,jar之间还可能有多重依赖关系,容易管理混乱

2、项目的管理:项目规模越来越大,需要拆分成多个子模块,模块之间的相互依赖关系需要统一管理,并且项目生命周期中的编译,打包,测试,运行等步骤都需要统一管理

l 如何解决?

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-13qTScZv-1593161829393)(../img-folder/Maven/1576483131060.png)]

开发一个工具对jar包和项目进行统一的管理,比如:

把jar包都编个座标,记录并存放在一个地方(这个地方称作为仓库),项目中要用哪个jar就根据座标来仓库中找就行了;

对项目生命周期和模块进行统一管理,能够自动化的执行编译,打包,测试,运行等操作。

而我们想到的这些解决方案,早就有大牛帮我们实现好了,那就是Maven!

总结:通俗的说:maven就是用来管理jar包+管理项目

注意:这些工具都是帮助/辅助我们工作的,我们最终的开发产出物都是代码

2.初识Maven

l 官网

http://maven.apache.org/

l 百科介绍

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sH1cePbc-1593161829395)(../img-folder/Maven/wps3.jpg)]

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 清理、编译、测试、报告 、打包、部署、站点生成。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HfbPas1r-1593161829399)(../img-folder/Maven/wps4.png)]

①清理:删除以前的编译结果,为重新编译做好准备。

②编译:将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项目核心配置文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BollRFTc-1593161829402)(../img-folder/Maven/wps5.jpg)]

(4)Maven插件

maven 管理项目生命周期过程都是基于插件完成的,例如:开发中使用的tomcat插件。

(5)Maven仓库

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GNEDHJLN-1593161829403)(../img-folder/Maven/1576483374423.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TyAKRLRt-1593161829405)(../img-folder/Maven/wps7.jpg)]

仓库名称 作用
本地仓库 相当于缓存,工程第一次会从远程仓库(互联网)去下载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来构建项目。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章