maven

1、Maven是一个项目管理工具,它包含了一个项目对象模型(POM:Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑

2、Maven能解决的问题

依赖管理:maven工程对jar包的管理过程

项目的一键构建:指的是项目从编译、测试、运行、打包、安装,部署整个过程都交给maven进行管理,这个过程称为构建。一键构建指的是整个构建过程,使用maven一个命令可以轻松完成整个工作

3、Maven标准目录结构/约定配置

Maven提倡使用一个共同的标准目录结构,Maven使用约定优于配置的原则,尽可能的遵守这样的目录结构

存放pom.xml和所有的子目录:${basedir}

项目的java源代码:${basedir}/src/main/java

项目的资源,比如说property文件,springmvc.xml:${basedir}/src/main/resources

项目的测试类,比如说Junit代码:${basedir}/src/test/java

测试用的资源:${basedir}/src/test/resources

web应用文件目录,web项目的信息,比如存放web.xml、本地图片、jsp视图页面:${basedir}/src/main/webapp/WEB-INF

打包输出目录:${basedir}/target

编译输出目录:${basedir}/target/classes

测试编译输出目录:${basedir}/target/test-classes

Maven只会自动运行符合该命名规则的测试类:Test.java

Maven默认的本地仓库目录的位置:~/.m2/repository

4、Maven POM

POM(Project Object Model,项目对象模型)是Maven工程的基本工作单元,是一个XML文件,包含了项目的基本信息,用于描述项目如何构建,声明项目依赖,等等

执行任务或目标时,Maven会在当前目录中查找POM。它读取POM,获取所需的配置信息,然后执行目标

POM中可以指定以下配置:项目依赖;插件;执行目标;项目构建profile;项目版本;项目开发者列表;相关邮件列表信息

在创建POM之前,首先需要描述项目组(groupId),项目的唯一ID

5、常用命令

mvn clean -->清除之前在本地编译生成的target目录

mvn compile-->编译src/main下的文件

mvn test-->编译src/test下的文件,同时也编译了src/main下的代码

mvn package-->编译src/main和src/test下的文件,同时打包war、jar

mvn install-->编译src/main和src/test下的文件,同时打包war、jar,并把生成的包放到本地仓库

6、Maven构建生命周期

Maven构建生命周期定义了一个项目构建跟发布的过程

一个典型的Maven构建(build)生命周期是由以下几个阶段的序列组成的:

默认生命周期:

    验证:validate======》验证项目======》验证项目是否正确且所有必须信息是可用的

    编译:compile======》执行编译======》源代码编译在此阶段完成

    测试:test======》测试======》使用适当的单元测试框架运行测试

    打包:package======》打包======》创建JAR/WAR包如在pom.xml中定义提及的包

    检查:verify======》检查======》对集成测试的结果进行检查,以保证质量达标

    安装:install======》安装======》安装打包的项目到本地仓库,以供其他项目使用

    发布:deploy======》部署======》拷贝最终的工程包到远程仓库中,以共享给其他开发人员和工程

清理生命周期:

    清除项目编译信息:clean

标准的生命周期:

clean:项目清理的处理

default或build:项目部署的处理

site:项目站点文档创建的处理

7、Maven构建配置文件

构建配置文件是一系列的配置项的值,可以用来设置或者覆盖Maven构建默认值

8、Maven仓库

在Maven的术语中,仓库是一个位置。Maven仓库是项目中依赖的第三方库,这个库所在的位置叫做仓库。在Maven中,任何一个依赖、插件或者项目构建的输出,都可以称之为构件。Maven仓库能帮助管理构件(主要是JAR),它就是放置所有JAR文件(WAR,ZIP,POM等等)的地方

Maven依赖搜索顺序:本地仓库======》中央仓库======》远程仓库

9、Maven插件

Maven有以下三个标准的生命周期:

clean:项目清理的处理

default或build:项目部署的处理

site:项目站点文档创建的处理

每个生命周期中都包含着一系列的阶段,这些阶段就相当于Maven提供的统一的接口,然后这些阶段的实现由Maven的插件来完成

在输入mvn命令的时候,比如mvn clean,clean对应的就是Clean生命周期中的clean阶段。但是clean的具体操作是由maven-clean-plugin来实现的

Maven生命周期的每一个阶段的具体实现都是由Maven插件实现的

Maven实际上是一个依赖插件执行的框架,每个任务实际上是由插件完成。Maven插件通常被用来:

创建jar文件;创建war文件;编译代码文件;代码单元测试;创建工程文档;创建工程报告

插件类型

Maven提供了下面两种类型的插件

Build plugins======》在构建时执行,并在pom.xml的元素中配置

Reporting plugins======》在网站生成过程中执行,并在pom.xml的元素中配置

常用插件

clean======》构建之后清理目标文件。删除目标目录

compiler======》编译Java源文件

surefile======》运行JUnit单元测试。创建测试报告

jar======》从当前工程中构建JAR文件

war======》从当前工程中构建WAR文件

javadoc======》为工程生成Javadoc

antrun======》从构建过程的任意一个阶段中运行一个ant任务的集合

10、概念模型图

pom文件:项目自身信息;项目运行所依赖的jar包信息;项目运行环境信息,比如:jdk,tomcat信息

依赖管理模型中放的是:jar包坐标信息  --> 公司组织的名称<groupId></groupId> + 项目名<artifactId></artifactId> + 版本号<version></version>

默认生命周期:compile、test、package、install、deploy  每一个构建项目的命令都对应了maven底层一个插件

11、Maven构建Java项目

Maven使用原型archtype插件创建项目。要创建一个简单的Java应用,使用maven-archtype-quickstart插件

12、idea继承maven插件

13、使用骨架创建maven的java工程-->java

14、不使用骨架创建maven的java工程

15、使用骨架创建maven的web工程-->webapp

16、maven工程servlet实例之指定web

原文地址:https://www.cnblogs.com/liushoudong/p/13198004.html