maven
Posted LinBupt
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
以上是关于maven的主要内容,如果未能解决你的问题,请参考以下文章