Maven - note 1

【背景】假设我们开发一个项目,或者做一个小demo,如果用···,那么我们就必须将···所依赖的jar包依次找出来,并手动导入。这个过程会想象一下就比较繁琐。

Maven是基于项目对象模型(POM, project object model),可以通过一小段描述信息(配置)来管理项目的构建,报告和文档的软件项目管理工具

主要作用:

  • 选择获取(特定版本的)jar包。

  • 寻找依赖,下载依赖。

  • 热部署,热编译。(减免重启服务器/重新部署)

[TOC]

目录结构

常见的简单结构

1
2
3
4
5
6
7
8
9
┬ /.settings
├ /src
│ ├ /main
│ └ /test
├ /target
│ └ /class
├ .classpath
├ .project
└ pom.xml
路径/文件 主要用途
/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。

  • 访问官网

  • 找到下载

  • 选对文件(win10应该选bin.zip吧?)

  • 查看官方指南

  • 解压到合适的路径

  • 把bin目录的绝对路径,加入系统环境变量PATH

  • 命令行输入mvn -v看看返回的版本信息。

IDEA

???

目录结构

1
2
3
4
5
6
7
8
9
10
┬ /bin
├ /boot
├ /conf
│ ├ /logging
│ ├ settings.xml
│ └ toolchains.xml
├ /lib
├ LICENCE
├ NOTICE
└ README.txt
路径/文件 主要用途
/bin 放Maven的启动文件,包括两种:一种是直接启动,另一种是通过debug模式下启动。
/boot 放类加载器框架。
/conf 放全局配置文件setting.xml,即为所有仓库都实施的配置。仓库也有私有配置的setting,一般推荐使用私有配置,因为全局配置在Maven的安装目录里。
/lib 放Maven运行需要的各种jar包。
LICENCE Maven的软件使用许可证书
NOTICE Maven包含的第三方软件
README.txt Maven的简单介绍以及安装说明

解决下载——镜像

因为众所周知的原因,在国内用Maven一般情况是很难下载到东西的。

现在一般都是在setting.xml<mirrors>标签里加阿里云的镜像就可以了。

1
2
3
4
5
6
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>

解决下载——代理

一般是个人希望用工具去下官方仓库的东西,或者有特殊的任务需求才会用把。

能代理的前提是,你有一个可以ping得通repol.maven.org的代理服务器访问权哦。

1
2
3
4
5
6
7
8
9
10
11
12
<proxy>
<id>optional</id> //代理Id
<active>true</active> //是否要激活
<protocol>http</protocol> //采用协议
<username>proxyuser</username> //如果代理需要认证就需要账号密码
<password>proxypass</password>
<host>proxy.host.net</host> // ip
<port>80</port> //端口
<nonProxyHosts>local.net|some.host.com</nonProxyHosts>
//不需要代理的主机ip用户|隔开,例如里面的some.host.com,即所有对这个网站的访问都不需要代理

</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包如果本地仓库没有,默认会从中央仓库下载。

你访问不了,就只能依赖其他途径了。(见上文”解决下载“)

参考

【长】Maven从入门到精通

【长】maven(一) maven到底是个啥玩意~

【中】Maven是什么?

【短/附书】Maven的作用到底是什么

【电子书/要注册】Maven实战

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×