【背景】假设我们开发一个项目,或者做一个小demo,如果用···,那么我们就必须将···所依赖的jar包依次找出来,并手动导入。这个过程会想象一下就比较繁琐。
Maven是基于项目对象模型(POM, project object model),可以通过一小段描述信息(配置)来管理项目的构建,报告和文档的软件项目管理工具。
主要作用:
选择获取(特定版本的)jar包。
寻找依赖,下载依赖。
热部署,热编译。(减免重启服务器/重新部署)
[TOC]
目录结构
常见的简单结构
1 | ┬ /.settings |
路径/文件 | 主要用途 |
---|---|
/src |
主要存放源代码文件,其中一般有两个文件目录; |
/src/main |
放用于运行项目的代码,再下一级的目录就是各种package。 |
/src/test |
放用于测试项目的代码,同时都拥有resource资源文件。 |
/target |
放编译后的代码。 |
pom.xml |
资源文件,确定该项目需要使用哪些jar包的坐标,并通过该坐标在中央仓库进行自动下载。 |
Tips: 所以 pom.xml 大概是怎么做的?
1
2
3
4
5
6
7
8> <dependencies>
> <dependency>
> <groupId>org.mybatis</groupId>
> <artifactId>mybatis</artifactId>
> <version>3.2.5</version>
> </dependency>
> </dependencies>
>
通过三个元素标识一个Maven项目,IDE就能去远程仓库下载了。
安装与配置
Win10
前提:建议先装好JDK。
IDEA
???
目录结构
1 | ┬ /bin |
路径/文件 | 主要用途 |
---|---|
/bin |
放Maven的启动文件,包括两种:一种是直接启动,另一种是通过debug模式下启动。 |
/boot |
放类加载器框架。 |
/conf |
放全局配置文件setting.xml ,即为所有仓库都实施的配置。仓库也有私有配置的setting,一般推荐使用私有配置,因为全局配置在Maven的安装目录里。 |
/lib |
放Maven运行需要的各种jar包。 |
LICENCE |
Maven的软件使用许可证书 |
NOTICE |
Maven包含的第三方软件 |
README.txt |
Maven的简单介绍以及安装说明 |
解决下载——镜像
因为众所周知的原因,在国内用Maven一般情况是很难下载到东西的。
现在一般都是在setting.xml
的<mirrors>
标签里加阿里云的镜像就可以了。
1 | <mirror> |
解决下载——代理
一般是个人希望用工具去下官方仓库的东西,或者有特殊的任务需求才会用把。
能代理的前提是,你有一个可以ping得通repol.maven.org
的代理服务器访问权哦。
1 | <proxy> |
仓库概念
通过pom.xml中的配置,就能够获取到想要的jar包,但是这些jar从哪来?答案就是仓库。
也可以理解成——网盘(?!)
本地仓库
Maven会将工程中依赖的构件(Jar包)从远程下载到本机一个目录下管理,每个电脑默认的仓库是在 $user.home/.m2/repository
下。
通常人们会修改本地仓库位置,自己创建一个文件夹,在从网上下载一个拥有相对完整jar包集合,都丢到本地仓库中,之后写项目时可以节约下载的时间。
在Maven根目录./conf/setting.xml
,修改本地库位置。找到<localRepository>
节点,根据旁边的注释依葫芦画瓢即可。
第三方仓库
第三方仓库,又称为内部中心仓库,也称为私服。
私服:一般是由公司自己设立的,只为本公司内部共享使用。它既可以作为公司内部构件协作和存档,也可作为公用类库镜像缓存,减少在外部访问和下载的频率。
私服可以使用的是局域网,中央仓库必须使用外网,也就是一般公司都会创建这种第三方仓库,保证项目开发时,项目所需用的jar都从该仓库中拿,每个人的版本就都一样。
注意:连接私服,需要单独配置。如果没有配置私服,默认不使用。
中央仓库
Maven内置了远程公用仓库:http://repo1.maven.org/maven2
这个公共仓库是由Maven官方维护,里面有大量的常用类库,并包含了世界上大部分流行的开源项目构件。目前以java为主。
工程依赖的jar包如果本地仓库没有,默认会从中央仓库下载。
你访问不了,就只能依赖其他途径了。(见上文”解决下载“)