Maven
1.介绍
Maven是一个项目管理工具,它包含了一个项目对象模型 (POM:Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管
理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。
2.Maven的两个精典作用
1.Maven的依赖管理
Maven的一个核心特性就是依赖管理。当我们涉及到多模块的项目(包含成百个模块或者子项目),管理依赖就变成一项困难的任务。Maven展示出了它对处理这种情形的高度控制。传统的 WEB项目中,我们必须将工程所依赖的 jar包复制到工程中,导致了工程的变得很大。那么maven工程是如何使得工程变得很少呢?
maven工程中不直接将 jar包导入到工程中,而是通过在 pom.xml文件中添加所需 jar包的坐标,这样就很好的避免了 jar直接引入进来,在需要用到 jar包的时候,只要查找 pom.xml文件,再通过 pom.xml文件中的坐标,到一个专门用于”存放 jar包的仓库”(maven仓库)中根据坐标从而找到这些 jar包,再把这些 jar包拿去运行。
通过 pom.xml文件配置要引入的 jar包的坐标,再读取坐标并到仓库中加载 jar包,这样我们就可以直接使用 jar包了,为了解决这个过程中速度慢的问题,maven中也有索引的概念,通过建立索引,可以大大提高加载 jar包的速度,使得我们认为 jar包基本跟放在本地的工程文件中再读取出来的速度是一样的。这个过程就好比我们查阅字典时,为了能够加快查找到内容,书前面的目录就好比是索引,有了这个目录我们就可以方便找到内容了,一样的在 maven仓库中有了索引我们就可以认为可以快速找到 jar包。
2.项目的一键构建
我们的项目,往往都要经历编译、测试、运行、打包、安装,部署等一系列过程。
什么是构建:
指的是项目从编译、测试、运行、打包、安装,部署整个过程都交给maven进行管理,这个
过程称为构建。
一键构建:
指的是整个构建过程,使用 maven一个命令可以轻松完成整个工作。
Maven规范化构建流程如下:
通过 tomcat:run的这个命令,我们发现现在的工程编译,测试,运行都变得非常简单。
3.Maven配置
配置 MAVEN_HOME ,变量值就是你的 maven安装的路径(bin目录之前一级目录)
在Path中%MAVEN_HOME%\bin
测试 mvn -v
4.Maven工程的认识
src/main/java ——存放项目的.java文件
src/main/resources ——存放项目资源文件,如spring, hibernate配置文件
src/test/java ——存放所有单元测试.java文件,如JUnit测试类
src/test/resources ——测试资源文件
target ——项目输出位置,编译后的class文件会输出到此目录
pom.xml——maven项目核心配置文件
5.Maven常用命令
1.compile
compile是maven工程的编译命令,作用是将src/main/java下的文件编译为class文件输出到target目录下
2.test
test是maven工程的测试命令mvn test,会执行 src/test/java下的单元测试类。
3.clean
clean是maven工程的清理命令,执行clean会删除 target目录及内容。
4.package
package是maven工程的打包命令,对于java工程执行package打成jar包,对于 web工程打成 war包。
5.install
install是maven工程的安装命令,执行install将maven打成 jar包或war包发布到本地仓库。
6.Maven指令的生命周期
maven对项目构建过程分为三套相互独立的生命周期,请注意这里说的是“三套”,而且“相互独立”,
这三套生命周期分别是:
Clean Lifecycle 在进行真正的构建之前进行一些清理工作。
Default Lifecycle 构建的核心部分,编译,测试,打包,部署等等。
Site Lifecycle 生成项目报告,站点,发布站点。
7.坐标定义
在 pom.xml中定义坐标,内容包括:groupId、artifactId、version,详细内容如下:
<!--项目名称,定义为组织名+项目名,类似包名-->
<groupId>cn.itcast.maven</groupId>
<!-- 模块名称 -->
<artifactId>maven-first</artifactId>
<!-- 当前项目版本号,snapshot为快照版本即非正式版本,release为正式发布版本 -->
<version>0.0.1-SNAPSHOT</version>
<packaging > :打包类型
jar:执行 package会打成 jar包
war:执行 package会打成 war包
pom :用于 maven工程的继承,通常父工程设置为 pom
8.pom基本配置
pom.xml是 Maven项目的核心配置文件,位于每个工程的根目录,基本配置如下:
<project > :文件的根节点 .
<modelversion > : pom.xml使用的对象模型版本
<groupId > :项目名称,一般写项目的域名
<artifactId > :模块名称,子项目名或模块名称
<version > :产品的版本号 .
<packaging > :打包类型,一般有 jar、war、pom 等
<name > :项目的显示名,常用于 Maven 生成的文档。
<description > :项目描述,常用于 Maven 生成的文档
<dependencies> :项目依赖构件配置,配置项目依赖构件的坐标
<build> :项目构建配置,配置编译、运行插件等。