Maven 简介

Maven是一个项目管理和自动化工具。

原理

坐标

坐标是Maven中定位一个依赖的关键,基本如下,

1
2
3
<groupId>a.b.c</groupId>
<artifactId>d</artifactId>
<version>e</version>

依赖

依赖管理是Maven提供的核心功能,利用jar包的自动引入与加载,解决了手动引入麻烦。

1
2
3
4
5
<dependency>
<groupId>a.b.c</groupId>
<artifactId>d</artifactId>
<version>e</version>
</dependency>

依赖传递:Maven提供了依赖传递机制来解决不同项目直接的重复引用,避免多版本冲突。

依赖传递的原则:

路径最近者优先:使用深度优先原则,使用深度最浅的jar包;

第一声明者优先:在相同深度前提下,哪个依赖在前就使用哪个依赖。


dependency插件用于Maven项目依赖的管理,例如,mvn dependency:tree可以查看当前项目的依赖树。

Maven仓库

Maven仓库是用于集中存储依赖的地方,可分为本地仓库远程仓库

本地仓库是指运行环境的本地存储仓库,作为缓存加速应用构建,默认位置~/.m2

远程仓库是指单独部署的一套依赖存储中心,可分为中央仓库私有仓库

其中,私有仓库是为了解决私有化依赖存储的问题。

依赖是如何自动更新的?

通过指定snapshot版本来实现自动更新依赖。

使用

project

1
2
3
4
5
6
${basedir} # 子目录,存放有pom.xml
${basedir}/src/main/java # 项目源码
${basedir}/src/main/resource # 项目资源
${basedir}/src/test/java # 单元测试
${basedir}/src/test/resource # 测试资源
${basedir}/target # 编译结果

Download

site: http://maven.apache.org/download.cgi

Configure

1
2
3
# ~/.bash_profile 或 ~/.zhsrc
export MAVEN_HOME=/path/to/maven
export PATH=${PATH}:${MAVEN_HOME}/bin

执行mvn -v,查看是否配置成功

Eclipse plugin

通过eclipse的install new software来安装:

1
maven-plugin: http://download.eclipse.org/technology/m2e/releases

Use maven with eclipse

create maven project

1
2
3
4
File -> Other -> Maven -> Maven Project
Group Id: com.test.app # 项目的唯一标识符,实际对应包结构
Artifact Id: quickstart # 具体的项目名称
Version: 0.0.1 # 项目版本

此时,会生成一个名为quickstart

add dependencies to quickstart

对该项目添加json依赖,

1
2
3
4
pom.xml -> Depndencies -> add(left)
Group Id: com.google.code.gson
Artifact Id: gson
Version: 2.3.1

use gson

1
2
3
4
5
6
public class App {
public printJson(String s) {
Gson gson = new Gson();
System.out.println(gson.toJson(s));
}
}

maven build

1
quickstart -> properties -> run as -> maven build

use quickstart.jar

1
2
3
4
5
6
7
8
import com.test.app.App;

public class Test {
public static void main( String[] args ) {
App app = new App();
app.printJson("hello world");
}
}