Maven是一个项目管理工具,它包含了一个项目对象模型(POM:Project Object Model),一组标准集合,一个项目生命周期(Project LifeCycle),一个依赖管理系统(Dependency managerment System),和用来运行定义在生命周期(phase)中插件(plugin)目标(goal)的逻辑。
①首先,maven是一个优秀的项目构建工具。使用maven,可以很方便的对项目进行分模块构建,这样在开发和测试打包部署时,效率会提高很多。
②其次,maven可以进行依赖的管理。使用maven,可以将不同系统的依赖进行统一管理,并且可以进行依赖之间的传递和继承。
1)install 本地安装, 包含编译,打包,安装到本地仓库
2)clean 清除已编译信息,删除工程中的target目录。
3)compile 只编译。javac命令
4)deploy 部署。常见于结合私服使用的命令,相当于是install+上传jar到私服。
5)package 打包。包含编译,打包两个功能。
在Maven中有三套相互独立的生命周期,请注意这里说的是“三套”,而且“相互独立”,这三套生命周期分别是:
(1)Clean清理项目: 在进行真正的构建之前进行一些清理工作。 mvn clean
(2)Default构建项目: 构建的核心部分,编译,测试,打包,部署等等。 mvn compile test package install deploy
(3)Site生成项目站点: 生成项目报告,站点,发布站点。
Maven仓库是基于简单文件系统存储的,集中化管理Java API资源(构件)的一个服务。仓库中的任何一个构件都有其唯一的坐标,根据这个坐标可以定义其在仓库中的唯一存储路径。得益于 Maven 的坐标机制,任何 Maven项目使用任何一个构件的方式都是完全相同的,Maven 可以在某个位置统一存储所有的 Maven 项目共享的构件,这个统一的位置就是仓库,项目构建完毕后生成的构件也可以安装或者部署到仓库中,供其它项目使用。
对于Maven来说,仓库分为两类:本地仓库和远程仓库。
1)POM工程
POM工程是逻辑工程。用在父级工程或聚合工程中。用来做jar包的版本控制。
2)JAR工程
将会打包成jar用作jar包使用。即常见的本地工程 - Java Project。
3)WAR工程
将会打包成war,发布在服务器上的工程。如网站或服务。即常见的网络工程 - Dynamic Web Project。war工程默认没有WEB-INF目录及web.xml配置文件,IDE通常会显示工程错误,提供完整工程结构可以解决。
使用<dependency>的<exclusion>元素将会引起冲突的元素排除。
● 可能由于网络波动,每有下载完成,又缓存了,这个时候下载多少次都会失败,解决办法就是去本地仓库将对应的依赖全部删除再重新下载
● 由于依赖传递带来的版本冲突问题,解决办法就是排除依赖。