11-16 Maven
1 Maven
1.1Maven概念
Maven 是一个强大的项目管理和构建自动化工具,它通过抽象的项目对象模型(POM: Project ObjectModel)和构建生命周期模型(Project Lifecycle)来对项目及其构建过程进行管理(DependencyManagementSystem),Maven 最大化的消除了构建的重复,提升了构建的效率与标准化。除此之外,Maven 还有依赖管理、自动生成项目站点、代码静态检查等特性。现在已经有无数开源或商业项目使用Maven进行构建,Maven 现在已经是 Java 社区事实标准的构建具。
1.2 Maven的作用
maven对项目的第三方构件(jar包)进行统一管理。向工程中加入jar包不要手工从其它地方拷贝,通过maven定义jar包的坐标,自动从maven仓库中去下载到工程中。maven提供一套对项目生命周期管理的标准,开发人员、和测试人员统一使用maven进行项目构建。项目生命周期管理:编译、测试、打包、部署、运行。maven对工程分模块构建,提高开发效率。
1.3 Maven的概念模型
项目对象模型 (Project Object Model)。POM对象模型,每个maven工程中都有一个pom.xml文件,定义工程所依赖的jar包、本工程的坐标、打包运行方式。依赖管理系统(基础核心 )。maven通过坐标对项目工程所依赖的jar包统一规范管理。maven定义一套项目生命周期。清理、初始化、编译、测试、报告 、打包、部署、站点生成。一组标准集合。maven工程有自己标准的工程目录结构、定义坐标有标准。maven 管理项目生命周期过程都是基于插件完成的,例如:开发中使用的tomcat插件。
1.4 Maven的生命周期
maven把项目的构建划分为不同的生命周期(lifecycle)。粗略一点的话,它这个过程(phase)包括:编
译、测试、打包、集成测试、验证、部署。maven中所有的执行动作(goal)都需要指明自己在这个过程
中的执行位置,然后maven执行的时候,就依照过程的发展依次调用这些goal进行各种处理。
这个也是maven的一个基本调度机制。一般来说,位置稍后的过程都会依赖于之前的过程。当然,
maven同样提供了配置文件,可以依照用户要求,跳过某些阶段。
1.5 Maven的仓库
仓 库 名 称 |
作用 |
本 地 仓 库 |
相当于缓存,工程第一次会从远程仓库(互联网)去下载jar 包,将jar包存在本地仓库(在程 序员的电脑上).第二次不需要从远程仓库去下载,先从本地仓库找,如果找不到才会去远程仓 库找 |
远 程 仓 库 中 央 仓 库 |
仓库中jar由专业团队(maven团队)统一维护。中央仓库的地址:http://repo1.maven.org/maven2 |
远 程 仓 库 私 服 |
在公司内部架设一台私服,私服代理其他的远程仓库, 当Maven需要下载构件的时候,它从 私服请求,如果私服上不存在该构件,则从代理的远程仓库下载,缓存在私服上之后,再 为Maven的下载请求提供服务。我们还可以把一些无法从外部仓库下载到的构件上传到私 服上。。 |
1.6 Maven的坐标
Maven的一个核心的作用就是管理项目的依赖,引入我们所需的各种jar包等。为了能自动化的解析任何一个Java构件,Maven必须将这些Jar包或者其他资源进行唯一标识,这是管理项目的依赖的基础,也就是我们要说的坐标。包括我们自己开发的项目,也是要通过坐标进行唯一标识的,这样才能才其它项目中进行依赖引用。坐标的定义元素如下:
groupId:定义当前Maven项目名称
artifactId:定义项目模块
version:定义当前项目的当前版本
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
2 在idea中使用maven
2.1 解决项目构建缓慢问题
面构建项目的时候一般会比较慢 , 是因为构建的时候去archetype-catalog.xml文件 读取项目原型信息。这个文件默认要去中央仓库下载 , 大小在6MB左右 , 下载过来之后 , 才能构建成功 , 所以构建比较慢。我们可以修改获取项目原型信息的方式来解决缓慢问题 , 只需要对archetypeCatalog参数进行下配置。
archetypeCatalog可选值有:
remote:默认值 , 指向Maven中央仓库的Catalog(不推荐)
internal:内部 , 使用maven插件中内置的信息(推荐)
local:本地 , 需要先下载过来archetype‐catalog.xml
方式1 创建项目或模块时指定:
创建项目或模块时指定(每次创建maven项目都需要指定)在创建项目或者模块的时候添加一个选项,名称为:archetypeCatalog,值为:internal
方式2 修改maven配置参数:
修改maven配置参数,在maven的VM Options加上 -DarchetypeCatalog=internal 参数
3 Maven的常用命令
3.1 clean命令
maven工程的清理命令,执行clean会删除target目录及内容。可以配合相应命令一起使用,如 mvn clean package ,mvn clean test
3.2 complie命令
maven工程的编译命令,作用是将 src/main/java 下的文件编译为class文件输出到target目录下。
3.3 test命令
maven工程的测试命令,作用是执行 src/test/java 下单元测试类,并编译为class文件。
3.4 package命令
maven工程的打包命令,对于java工程执行package打成jar包,对于web工程打成war包。
3.5 install命令
maven工程的安装命令,执行install将mave工程打成jar包或war包,并发布到本地仓库。
4.依赖管理
4.1Maven插件
Maven是一个核心引擎,提供了基本的项目处理能力和建设过程的管理,以及一系列的插件是用来执行实际建设任务。maven插件可以完成一些特定的功能。例如,集成jdk插件可以方便的修改项目的编译环境;集成tomcat插件后,无需安装tomcat服务器就可以运行tomcat进行项目的发布与测试。在pom.xml中通过plugin标签引入maven的功能插件。
JDK编译版本的插件
<build>
<!--maven插件-->
<plugins>
<!--jdk编译插件-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>utf-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
4.2 依赖范围

近期评论