Maven 是什么东西?
最近在学习Java的过程中,遇到了一个“东西”-----Maven ,这个玩意很不清晰,然后就学习了一下,下面我用自己的话来简单的介绍一下Maven。
在介绍之前有个故事讲给你听: 假如我们正在开发两个项目(A 和 B),其中A项目中的一些功能依赖于B项目中的某些类,那么该如何来维系这种依赖关系?
有人说: 很简单,我们之前在写程序的时候,需要用什么就把需要的内容导入自己的项目中,导入jar包即可,所以这里也一样,可以将B项目打包成jar包,然后在A项目的Library下导入B的jar文件,这样A项目就可以调用B项目中的某些类了。
但是这样有一个严重的缺陷就是:在开发的过程中,如果发现B有bug那么,我们需要把项目B修复好,然后重新将B打包,并对项目A进行重编译操作。
那我们应该怎么办?
下面就在介绍Maven---:
什么是Maven:
Maven是基于项目对象模型(POM project object model),可以通过一小段描述信息(配置)来管理项目的构建,报告和文档的软件项目管理工具[百度百科]
我觉得Maven的核心功能就是合理叙述项目之间的依赖关系,通俗点讲就是通过pom.xml文件的配置获取jar包,而不用手动去添加jar包,那么如何通过pom.xml的配置就获取到jar包呢?
如果需要使用pom.xml来获取jar包,那么这个项目就必须是maven项目,maven项目和java项目有什么区别? 就是在在java项目或者web项目的上面包裹一层maven,本质上java项目还是java项目,但是包裹了maven之后,就可以使用maven提供的一些功能了(通过pom.xml 添加jar包)
举个例子:pom.xml获取springframework的jar包
上面的pom.xml所属的项目是A项目,那么A项目肯定是一个maven项目,通过上面这三个属性能够找到springframework对应版本的jar包,那么springframework肯定也是maven项目
通过上面pom.xml中的配置,就能够获取到我们想要的jar包,但是这些jar包在哪里? 答案就是: 仓库
仓库:
仓库分为: 本地仓库、第三方仓库、中央仓库
本地仓库:
我们在下载了Maven之后,Maven会将工程中的构件,从远程下载到本地的一个目录下管理,每个电脑的默认仓库是:
$user.home/.m2/repository
一般我们会修改本地仓库位置,自己创建一个文件夹,在从网上下载一个拥有相对完整的所有jar包的结合,都丢到本地仓库中,然后每次写项目,直接从本地仓库里拿就行了
但是如果我们修改了仓库,那么就需要在maven的setting.xml中进行修改
第三方库:
第三方仓库,又称为内部中心仓库,也称为私服
私服:一般是由公司自己设立的,只为本公司内部共享使用。
中央仓库
Maven内置了远程公用仓库:http://repo1.maven.org/maven2
这个公共仓库是由Maven自己维护,里面有大量的常用类库,并包含了世界上大部分流行的开源项目构件。目前是以java为主工程依赖的jar包如果本地仓库没有,默认从中央仓库下载
过程: