学Maven,这篇万余字的教程,真的够用了! - 江南一点雨 - 博客园
仓库名称 | 作用 |
---|---|
本地仓库 | 相当于缓存,工程第一次会从远程仓库(互联网)去下载jar 包,将jar包存在本地仓库(在程序员的电脑上)。第二次不需要从远程仓库去下载。先从本地仓库找,如果找不到才会去远程仓库找。 |
中央仓库 | 仓库中jar由专业团队(maven团队)统一维护。中央仓库的地址:repo1.maven.org/maven2/ |
远程仓库 | 在公司内部架设一台私服,其它公司架设一台仓库,对外公开。 |
compile :为默认的依赖有效范围。如果在定义依赖关系的时候,没有明确指定依赖有效范围的话,则默认采用该依赖有效范围。此种依赖,在编译、运行、测试时均有效。
provided :在编译、测试时有效,但是在运行时无效。例如:servlet-api,运行项目时,容器已经提供,就不需要Maven重复地引入一遍了。
runtime :在运行、测试时有效,但是在编译代码时无效。例如:JDBC驱动实现,项目代码编译只需要JDK提供的JDBC接口,只有在测试或运行项目时才需要实现上述接口的具体JDBC驱动。
test :只在测试时有效,例如:JUnit。
system :在编译、测试时有效,但是在运行时无效。和provided的区别是,使用system范围的依赖时必须通过systemPath元素显式地指定依赖文件的路径。由于此类依赖不是通过Maven仓库解析的,而且往往与本机系统绑定,可能造成构建的不可移植,因此应该谨慎使用。systemPath元素可以引用环境变量。
常用命令 | 中文含义 | 说明 |
---|---|---|
mvn clean | 清理 | 这个命令可以用来清理已经编译好的文件 |
mvn validate | 验证项目 | 验证项目是否正确且所有必须信息是可用的 |
mvn compile | 编译 | 将 Java 代码编译成 Class 文件 |
mvn test | 测试 | 使用适当的单元测试框架(例如JUnit)运行测试。 |
mvn package | 打包 | 根据用户的配置,将项目打成 jar 包或者 war 包 |
mvn verify | 检查 | 对集成测试的结果进行检查,以保证质量达标 |
mvn install | 安装 | 安装打包的项目到本地仓库,以供其他项目使用 |
mvn site | 站点文档 | 生成项目的站点文档 |
mvn deploy | 上传 | 拷贝最终的工程包jar到远程/私服仓库中,以共享给其他开发人员和工程 |
级别:
我们不妨把pom.xml里面的引用的依赖视为第一级,那么依赖中各自引用的依赖视为第二级...第三级...
路径长短:
我们不妨以从pom.xml出发,到抵达该依赖时经过的“级”的个数来作为路径长短的标准。
原则 | 不同级(最短路径引用)原则 | 同级(第一级遵循最后、其它级遵循最先引用)原则 | |
---|---|---|---|
介绍 | 若两个版本不同的同一依赖,在不同的级别中,那么优先使用路径最短的那一个。 | 在第一级,谁后声明,使用谁 | 不在第一级,谁先声明,使用谁 |
图示 |
|
|
|
| make | ant | maven | gradle |
---|---|---|---|---|
简介 | 根据指定的shell语言进行构建的工具,使用make命令执行用户自定义操作。 | 用户自定义XML配置完成依赖项管理和构建的自动化工具。 | 基于对象模型的半自定义依赖项管理和构建的自动化工具。 | 基于ant和maven概念的项目自动化构建开源工具。 |
配置文件 | 类似shell语言编写的的Makefile文件。 | XML文件,默认build.xml。 | XML文件,默认pom.xml。 | 基于Groovy的特定领域语言(DSL)声明项目设置,抛弃XML繁琐配置。默认build.gradle。 |
特点 |
|
|
|
|
优点 |
|
|
|
|
缺点 |
|
|
|
|
私服作用:
私服是一个介于开发者和远程仓库之间的代理。
私服可以用来部署公司自己的 jar。