maven的概念模型
maven是Apache下的一个开源项目,它是一个项目管理工具,它用于对java项目进行项目构建、依赖管理及项目信息管理。当前使用maven的项在持续增长。
maven包含了一个项目对象模型(Project Object Mobel),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。
maven的概念模型用图来表示即为:
- 项目对象模型(Project Object Mobel)
通过pom.xml定义项目的坐标、项目依赖、项目信息、插件目标等。每个maven工程中都有一个pom.xml文件(核心配置文件),该文件里面定义了工程所依赖的jar包、本工程的坐标、打包运行方式等。 -
依赖管理系统(Dependency Management System)
maven的基础核心,通过定义项目所依赖组件的坐标由maven进行依赖管理。也即maven通过坐标对项目工程所依赖的jar包进行统一规范的管理。
比如:项目依赖Struts2.3.24,通过在pom.xml中定义依赖即可将Struts2的jar包自动加入到工程中,pom.xml中定义依赖如下:<dependency> <groundId>org.apache.struts</groundId> <artifactId>struts2-core</artifactId> <version>2.3.24</version> </dependency>
- 1
- 2
- 3
- 4
- 5
- 一个项目生命周期(Project Lifecycle)
一个软件开发人员每天都在完成项目的生命周期:清理、编译、测试、部署,有的手工完成,有的通过Ant(也是一个项目构建工具)脚本自动完成,maven将项目的生命周期抽象统一为:清理、初始化、编译、测试、报告、打包、部署、站点生成等。
maven就是要保证一致的项目构建流程,通过执行一些简单命令即可实现上边生命周期的各个过程。 - 一组标准集合
maven将整个项目管理过程定义一组标准,比如:通过maven构建工程有标准的目录结构,有标准的生命周期阶段、依赖管理有标准的坐标定义等。
我在这儿还是强调一遍:maven工程有自己标准的工程目录结构、有标准的坐标定义。 - 插件(plugin)目标(goal)
maven管理项目生命周期过程都是基于插件完成的。
maven的仓库
maven工作需要配置仓库,本地的项目A、项目B等通过maven从远程仓库(可以理解为互联网上的仓库)下载jar包并保存在本地仓库,本地仓库就是本地文件夹,当第二次需要此jar包时则不再从远程仓库下载,因为本地仓库已经存在了。可以将本地仓库理解为缓存,有了本地仓库就不用每次从远程仓库下载了。
下面描述了maven中仓库的类型:
- 本地仓库:用来存储从远程仓库或中央仓库下载的插件和jar包,项目使用一些插件或jar包,优先从本地仓库查找。
我的理解:本地仓库就相当于缓存,工程第一次会从远程仓库(互联网)去下载jar包,将jar包存在本地仓库(在程序员的电脑上)。第二次不需要从远程仓库去下载,先从本地仓库找,如果找不到才会去远程仓库找。 - 远程仓库:如果本地需要插件或者jar包,本地仓库没有,默认从远程仓库下载。
可以理解为在我们公司内部架设一台私服,其它公司架设一台仓库,且对外公开,这样的仓库就可看作远程仓库。 - 中央仓库:在maven环境内部内置一个远程仓库地址:http://repo1.maven.org/maven2,它是中央仓库(即特殊的远程仓库),服务于整个互联网,它是由maven团队自己维护的,里面由大量的常用类库,并包含了世界上大部分流行的开源项目构件。
本地仓库没有的jar包,maven默认从中央仓库下载。
maven安装与配置
下载网址:http://maven.apache.org/download.cgi
- bin目录:mvn.bat(以run方式运行项目)、mvnDebug.bat(以debug方式运行项目)
- boot目录:maven运行需要的类加载器
- conf目录:settings.xml,整个maven工具的核心配置文件
- lib目录:maven运行依赖的jar包。
环境变量设置
%MAVEN_HOME%为你安装的maven的路径。
将%MAVEN_HOME%\bin
加入到path环境变量中
本地仓库配置
本地仓库是用来存放联网下载的maven插件和jar包,maven本地仓库有的jar包将不再从互联网下载,所以本地仓库就相当于一个缓存。
在maven的安装目录中的conf目录下有一个settings.xml文件,在这个文件中可配置本地仓库,如下图:
如果本地仓库不配置(那么就会从互联网上下载jar包,而且下载速度贼慢),那么默认的本地仓库的位置就是${user.dir}/.m2/repository
目录
添加阿里源 ,找到 <mirrors> </ mirrors>标签,在标签内部 添加内容如下:
<mirror>
<id>AliMaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
我们还要理解全局settings配置文件和用户settings配置文件的区别:
- 全局settings配置文件:就是maven的安装目录中的conf目录下的settings.xml文件。该文件里面的所有配置可应用于所有项目。
- 用户settings配置文件:在
${user.dir}/.m2/repository
目录下。如果某些用户需要对maven特殊设置,用户可以自定义settings文件(虽然在本教程中不会使用到,但我们也应该要有所了解)。
IDEA 中配置maven:
File——Settings----maven,配置相关项。
Repository配置下库的地址。
idea创建maven项目时选择maven-archetype-quickstart.
idea创建maven web项目时选择maven-archetype-webapp.
具体参考https://www.cnblogs.com/1314wamm/p/7475771.html