Maven介绍
2017-03-04 12:59
127 查看
Maven: 介绍
Maven: mirror和repository区别
Maven: pom文件详解
可以方便的编译代码、进行依赖管理、管理二进制库等。
可以将项目过程规范化、自动化、高效化以及强大的可扩展性。
利用maven自身及其插件还可以获得代码检查报告、单元测试覆盖率、实现持续集成等。
在maven2里为pom.xml。
pom文件中包含了项目的信息和maven build项目所需的配置信息,通常有项目信息(如版本、成员)、项目的依赖、插件和goal、build选项等
pom是可以继承的,通常对于一个大型的项目或是多个module的情况,子模块的pom需要指定父模块的pom.
pom文件中节点含义如下:
project
pom文件的顶级元素
modelVersion
所使用的object model版本.
parent
表示父pom
groupId
是项目创建团体或组织的唯一标志符,通常是域名倒写.
artifactId
是项目artifact唯一的基地址名
packaging
artifact打包的方式,如jar、war等。默认为jar。
这个不仅表示项目最终产生何种后缀的文件,也表示build过程使用什么样的lifecycle。
version
artifact的版本,通常能看见为类似0.0.1-SNAPSHOT,其中SNAPSHOT表示项目开发中,为开发版本
name
表示项目的展现名,在maven生成的文档中使用
url
表示项目的地址,在maven生成的文档中使用
description
表示项目的描述,在maven生成的文档中使用
dependencies 表示依赖,在子节点dependencies中添加具体依赖的groupId
artifactId和version
build
表示build配置
其中groupId:artifactId:version唯一确定了一个artifact
如果说我们的项目产生的Artifact是一个个小工具,那么Repositories就是一个仓库,里面有我们自己创建的工具,也可以储存别人造的工具,我们在项目中需要使用某种工具时,在pom中声明dependency,编译代码时就会根据dependency去下载工具(Artifact),供自己使用。
对于自己的项目完成后可以通过mvn install命令将项目放到仓库(Repositories)中
仓库分为本地仓库和远程仓库,远程仓库是指远程服务器上用于存储Artifact的仓库,本地仓库是指本机存储Artifact的仓库,对于windows机器本地仓库地址为系统用户的
对于需要的依赖,在pom中添加dependency即可,可以在maven的仓库中搜索:http://mvnrepository.com/
maven的Build Lifecycle分为三种:
default(处理项目的部署)
clean (处理项目的清理)
site (处理项目的文档生成)
他们都包含不同的lifecycle。
Build Lifecycle是由phases构成的,下面重点介绍default Build Lifecycle几个重要的phase:
以上的phase是有序的,下面一个phase的执行必须在上一个phase完成后。
若直接以某一个phase为goal,将先执行完它之前的phase,
如:
将依次执行以下命令:
validate
compile
test
package
integration-test
verify
install
maven创建项目是根据Archetype(原型)创建的。
类似我们可以根据项目类型的需要使用不同的Archetype创建项目。通过Archetype我们可以快速标准的创建项目。
利用Archetype创建完项目后都有标准的文件夹目录结构。
既然Archetype相当于模具,那么当然可以自己再造模具了啊,创建Archetype
下面介绍利用maven自带的集中Archetype创建项目。
其中DgroupId指定groupId,DartifactId指定artifactId,
DarchetypeArtifactId指定ArchetypeId
DinteractiveMode表示是否使用交互模式,交互模式会让用户填写版本信息之类的,非交互模式采用默认值
这样我们便建好了一个简单的maven项目.
现在我们可以利用build Lifecycle进行一些操作,先命令行到工程根目录下
编译
此时将会编译源代码。
打包
此时target目录下会出现maven-quickstart-1.0-SNAPSHOT.jar文件,即为打包后文件
打包并安装到本地仓库
此时本机仓库会新增maven-quickstart-1.0-SNAPSHOT.jar文件。
其他:
src\main\resources文件夹是用来存放资源文件的,maven工程默认没有resources文件夹,如果我们需要用到类似log4j.properties这样的配置文件,就需要在src\main文件夹下新建resources文件夹,并将log4j.properties放入其中。
test需要用到资源文件,类似放到src\test下
对于apache的log4j没有log4j.properties文件或是目录错误,会报如下异常:
每个phase都可以作为goal,也可以联合,如之前介绍的mvn clean install
pom中增加build配置,指定java版本为1.7
到maven安装目录的conf文件夹下,修改settings.xml文件,如下:
这样便能对所有默认的maven项目指定jdk为1.8
Maven: mirror和repository区别
Maven: pom文件详解
1.maven的用途
maven是一个项目构建和管理的工具。提供了帮助管理 构建、文档、报告、依赖、scms、发布、分发的方法。可以方便的编译代码、进行依赖管理、管理二进制库等。
可以将项目过程规范化、自动化、高效化以及强大的可扩展性。
利用maven自身及其插件还可以获得代码检查报告、单元测试覆盖率、实现持续集成等。
2.maven的概念介绍
2.1 pom
pom是指project object Model。在maven2里为pom.xml。
pom文件中包含了项目的信息和maven build项目所需的配置信息,通常有项目信息(如版本、成员)、项目的依赖、插件和goal、build选项等
pom是可以继承的,通常对于一个大型的项目或是多个module的情况,子模块的pom需要指定父模块的pom.
pom文件中节点含义如下:
project
pom文件的顶级元素
modelVersion
所使用的object model版本.
parent
表示父pom
groupId
是项目创建团体或组织的唯一标志符,通常是域名倒写.
artifactId
是项目artifact唯一的基地址名
packaging
artifact打包的方式,如jar、war等。默认为jar。
这个不仅表示项目最终产生何种后缀的文件,也表示build过程使用什么样的lifecycle。
version
artifact的版本,通常能看见为类似0.0.1-SNAPSHOT,其中SNAPSHOT表示项目开发中,为开发版本
name
表示项目的展现名,在maven生成的文档中使用
url
表示项目的地址,在maven生成的文档中使用
description
表示项目的描述,在maven生成的文档中使用
dependencies 表示依赖,在子节点dependencies中添加具体依赖的groupId
artifactId和version
build
表示build配置
其中groupId:artifactId:version唯一确定了一个artifact
2.2 Artifact
项目的子名称。groupId可以理解为姓,Artifact就是名了(当然,这里假定姓名独一无二)。2.3 Repositories
Repositories是用来存储Artifact的仓库。如果说我们的项目产生的Artifact是一个个小工具,那么Repositories就是一个仓库,里面有我们自己创建的工具,也可以储存别人造的工具,我们在项目中需要使用某种工具时,在pom中声明dependency,编译代码时就会根据dependency去下载工具(Artifact),供自己使用。
对于自己的项目完成后可以通过mvn install命令将项目放到仓库(Repositories)中
仓库分为本地仓库和远程仓库,远程仓库是指远程服务器上用于存储Artifact的仓库,本地仓库是指本机存储Artifact的仓库,对于windows机器本地仓库地址为系统用户的
.m2/repository下面。
对于需要的依赖,在pom中添加dependency即可,可以在maven的仓库中搜索:http://mvnrepository.com/
2.4 Build Lifecycle
是指一个项目build的过程。maven的Build Lifecycle分为三种:
default(处理项目的部署)
clean (处理项目的清理)
site (处理项目的文档生成)
他们都包含不同的lifecycle。
Build Lifecycle是由phases构成的,下面重点介绍default Build Lifecycle几个重要的phase:
命令 | 说明 |
---|---|
validate | 验证项目是否正确以及必须的信息是否可用 |
compile | 编译源代码 |
test | 执行单元测试代码 |
package | 打包编译后的代码,在target目录下生成package文件 |
integration-test | 处理package以便需要时可以部署到集成测试环境 |
verify | 检验package是否有效并且达到质量标准 |
install | 安装package到本地仓库,方便本地其它项目使用 |
deploy | 部署,拷贝最终的package到远程仓库和替他开发这或项目共享,在集成或发布环境完成 |
若直接以某一个phase为goal,将先执行完它之前的phase,
如:
mvn install
将依次执行以下命令:
validate
compile
test
package
integration-test
verify
install
2.5 Goal
goal代表一个特定任务。命令 | 说明 |
---|---|
mvn package | 表示打包的任务,通过上面的介绍我们知道,这个任务的执行会先执行package phase之前的phase |
mvn deploy | 表示部署的任务 |
mven clean install | 则表示先执行clean的phase(包含其他子phase),再执行install的phase。 |
3.maven用法
主要讲下Archetype以及几种常用项目的创建.maven创建项目是根据Archetype(原型)创建的。
3.1 Archetype
原型对于项目的作用就相当于模具对于工具的作用,我们想做一个锤子,将铁水倒入模具成型后,稍加修改就可以了。类似我们可以根据项目类型的需要使用不同的Archetype创建项目。通过Archetype我们可以快速标准的创建项目。
利用Archetype创建完项目后都有标准的文件夹目录结构。
既然Archetype相当于模具,那么当然可以自己再造模具了啊,创建Archetype
下面介绍利用maven自带的集中Archetype创建项目。
3.2 quick start工程
创建一个简单的quick start项目,指定 -DarchetypeArtifactId为maven-archetype-quickstart,如下命令mvn archetype:generate -DgroupId=com.jeiker.xiao.test -DartifactId=maven-quickstart -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
其中DgroupId指定groupId,DartifactId指定artifactId,
DarchetypeArtifactId指定ArchetypeId
DinteractiveMode表示是否使用交互模式,交互模式会让用户填写版本信息之类的,非交互模式采用默认值
这样我们便建好了一个简单的maven项目.
现在我们可以利用build Lifecycle进行一些操作,先命令行到工程根目录下
编译
mvn compile
此时将会编译源代码。
打包
mvn package
此时target目录下会出现maven-quickstart-1.0-SNAPSHOT.jar文件,即为打包后文件
打包并安装到本地仓库
mvn install
此时本机仓库会新增maven-quickstart-1.0-SNAPSHOT.jar文件。
3.3 web工程
创建一个简单的web项目,只需要修 -DarchetypeArtifactId为maven-archetype-webapp即可:mvn archetype:generate -DgroupId=com.jeiker.xiao.web.test -DartifactId=maven-web -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false
其他:
src\main\resources文件夹是用来存放资源文件的,maven工程默认没有resources文件夹,如果我们需要用到类似log4j.properties这样的配置文件,就需要在src\main文件夹下新建resources文件夹,并将log4j.properties放入其中。
test需要用到资源文件,类似放到src\test下
对于apache的log4j没有log4j.properties文件或是目录错误,会报如下异常:
log4j:WARN No appenders could be found for logger (org.apache.commons.httpclient.HttpClient). log4j:WARN Please initialize the log4j system properly.
4.maven常用参数和命令
主要介绍maven常用参数和命令以及简单故障排除4.1 mvn常用参数
命令 | 说明 |
---|---|
mvn -e | 显示详细错误 |
mvn -U | 强制更新snapshot类型的插件或依赖库(否则maven一天只会更新一次snapshot依赖) |
mvn -o | 运行offline模式,不联网更新依赖 |
mvn -N | 仅在当前项目模块执行命令,关闭reactor |
mvn -pl module_name | 在指定模块上执行命令 |
mvn -ff | 在递归执行命令过程中,一旦发生错误就直接退出 |
mvn -Dxxx=yyy | 指定java全局属性 |
mvn -Pxxx | 引用profile xxx |
4.2 Build Lifecycle中的命令
命令 | 说明 |
---|---|
mvn test-compile | 编译测试代码 |
mvn test | 运行程序中的单元测试 |
mvn compile | 编译项目 |
mvn package | 打包,此时target目录下会出现maven-quickstart-1.0-SNAPSHOT.jar文件,即为打包后文件 |
mvn install | 打包并安装到本地仓库,此时本机仓库会新增maven-quickstart-1.0-SNAPSHOT.jar文件。 |
4.3 maven 常用命令
命令 | 说明 |
---|---|
mvn archetype:generate | 创建maven项目 |
mvn package | 打包,上面已经介绍过了 |
mvn package-Prelease | 打包,并生成部署用的包,比如deploy/*.tgz |
mvn install | 打包并安装到本地库 |
mvn eclipse:eclipse | 生成eclipse项目文件 |
mvn eclipse:clean | 清除eclipse项目文件 |
mvn site | 生成项目相关信息的网站 |
4.4 maven插件常用参数
命令 | 说明 |
---|---|
mvn -Dwtpversion=2.0 | 指定maven版本 |
mvn -Dmaven.test.skip=true | 如果命令包含了test phase,则忽略单元测试 |
mvn -DuserProp=filePath | 指定用户自定义配置文件位置 |
mvn -DdownloadSources=true -Declipse.addVersionToProjectName=true eclipse:eclipse | 生成eclipse项目文件,尝试从仓库下载源代码,并且生成的项目包含模块版本(注意如果使用公用POM,上述的开关缺省已打开) |
5.maven配置
为了修改maven创建项目默认以来的jdk版本,看了下maven配置:5.1 单项目配置
修改项目的pom.xml,影响单个项目,治标不治本<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.7</source> <target>1.7</target> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> </build>
pom中增加build配置,指定java版本为1.7
5.2 全局配置
修改maven配置,影响maven建立的所有项目到maven安装目录的conf文件夹下,修改settings.xml文件,如下:
<profiles> <profile> <id>jdk-1.8</id> <activation> <activeByDefault>true</activeByDefault> <jdk>1.8</jdk> </activation> <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> </profile> </profiles>
这样便能对所有默认的maven项目指定jdk为1.8
相关文章推荐
- maven的坐标,仓库介绍及配置
- 学习笔记——Maven实战(七)常用Maven插件介绍(上)
- Maven仓库—Nexus环境搭建及简单介绍
- Maven--生命周期介绍
- Maven的pom.xml介绍
- Maven简单介绍
- Maven实战(八)——常用Maven插件介绍(下)
- Maven的pom.xml介绍
- [maven] pom.xml常用配置介绍
- 常用Maven插件介绍
- Maven第三篇【Maven术语、pom.xml介绍】
- maven常用命令介绍
- maven常用命令介绍
- maven的scm插件介绍及使用
- Maven实战——常用Maven插件介绍
- Maven仓库介绍与本地仓库配置
- Maven环境搭建和介绍
- maven英文介绍
- Maven 介绍
- 项目管理利器maven学习笔记(一):maven介绍及环境搭建