1.maven是什么?
Maven是基于项目对象模型(POM project object model),可以通过一小段描述信息(配置)来管理项目的构建,报告和文档的软件项目管理工具[百度百科]
Maven 是是一个依赖管理工具和项目信息管理工具。以往开发项目时,程序员往往需要花较多的精力在引用Jar包搭建项目环境上。现在,我们只需要告诉Maven需要哪些Jar 包,它会帮助我们下载所有的Jar,极大提升开发效率。
**
2.为什么用maven?**
1.mvven可以管理jar文件
2. 自动下载jar和他的文档,源代码
3. 管理jar直接的依赖,a.jar需要b.jar,maven会直接下载b.jar
4. 管理你需要的jar版本
5. 帮你编译程序,把java编译为class
6. 帮你测试你的代码是否正确
7. 帮你打包文件,形成jar文件或者war文件
8. 帮你部署项目
3.目录结构
java项目
simple
---pom.xml 核心配置,项目根下
---src
---main
---java java源码目录
---resources java配置文件目录
---test
---java 测试源码目
---resources 测试配置目录
javaweb项目
pom.xml 核心配置
src/main/java java源码
src/main/resources java配置
src/main/webapp myeclipse web项目中 WebRoot目录
|-- WEB-INF
|-- web.xml
src/test 测试
target 输出目录
4.生命周期
1 清理 把之前项目的编译的东西删除掉,为新编译的代码做准备
2 编译 把程序源代码编译为执行代码,java--class文件
批量的,maven可以同时把成千上万的文件编译为class
3 测试 maven可以执行测试程序代码,验证功能是否正确
4 报告 生成测试结果的文件,测试通过没有
5 打包 把你的项目中所有的class文件,配置文件等所有资源放在一个压缩文件中
这个压缩文件就是i项目的结果文件,java项目,压缩文件按是.jar,web应用是.war
6.安装 把5中生成的文件jar,war安装到本机仓库
7 部署 把程序安装好可以执行
5.坐标
Maven用坐标来唯一标识一个项目、依赖,坐标由三部分组成:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
groupId 公司、组织的名称
artifactId 项目名称
version 项目版本号。SNAPSHOT,快照,开发中的版本,不稳定;Release,发布版本。
6.依赖传递
依赖的作用域:
依赖有3个作用时期:编译时、测试时、正式部署运行时。
有的依赖3个时期都要使用,有的依赖只在特定时期使用,可使用设置依赖的作用域:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
常用的值:
compile 默认值,编译、测试、正式运行,一般都使用默认值
test 只在测试时有效,比如junit
runtime 只在运行时有效(测试+正式运行)
provided 只在编译、测试时有效
7.仓库
通过pom.xml中的配置,就能够获取到想要的jar包,但是这些jar是在哪里呢?就是我们从哪里获取到的这些jar包?答案就是仓库。
仓库分为:本地仓库、第三方仓库(私服)、中央仓库
- 本地仓库
Maven会将工程中依赖的构件(Jar包)从远程下载到本机一个目录下管理,每个电脑默认的仓库是在 $user.home/.m2/repository
下
一般我们会修改本地仓库位置,自己创建一个文件夹,在从网上下载一个拥有相对完整的所有jar包的结合,都丢到本地仓库中,然后每次写项目,直接从本地仓库里拿就行了
修改本地库位置:在$MAVEN_HOME/conf/setting.xml
文件中修改,
D:\UserData\repo:就是我们自己创建的本地仓库,将网上下载的所有jar包,都丢到该目录下,我们就可以直接通过maven的pom.xml文件直接拿。
- 第三方仓库(私服)
开发者自己搭建的仓库,可以放自己的私有jar包,而不让别人使用,公司内通常做一个自己的远程仓库来加快jar包的下载速度,类似的阿里云仓库就是国内的加速仓库。
- 中央仓库
Maven内置了远程公用仓库:http://repo1.maven.org/maven2
这个公共仓库是由Maven自己维护,里面有大量的常用类库,并包含了世界上大部分流行的开源项目构件。目前是以java为主工程依赖的jar包如果本地仓库没有,默认从中央仓库下载
中央仓库很多都在国外,下载速度慢。国内的一些公司在自己的服务器上搭建了maven仓库(中央仓库的镜像),供内部人员使用,因为在公司私有的服务器上,所以又叫做私服。
有的公司把自己的maven分享出来,免费供开发者使用,比如阿里云的maven仓库。
如果使用了私服,需要jar包时,先到本地仓库中去找,找不到再去私服上找,如果私服上没有,就从中央仓库下载到私服,再从私服下载到本地仓库。
8.常用命令
打包:mvn package
编译:mvn compile
清空:mvn clean(清除编译后目录,默认是target目录)
运行测试:mvn test-compile
安装jar包到本地仓库中:mvn install
跳过测试:mvn xxx -DskipTests