SlideShare a Scribd company logo
1 of 14
Maven的简单介绍及基本应用 TonyDeng http://friendfeed.com/tonydeng http://twitter.com/wolfdeng http://delicious.com/wolf.deng http://wolfchina.blogbus.com
Maven定义 Maven是Apache的一个顶级的项目 http://maven.apache.org/ 一个较正式的Apache Maven定 义: Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。
Maven的安装 具体的安装,Maven的官网上都有文档,大家可以自己去看看。 需要注意的内容: 环境变量 setting.xml中本地仓库的配置
关键名词 Project: 任何你想build的事物,Maven都会把它们当作是一个Project 这些Project被定义为POM(Project Object Model) 一个Project可以依赖其他的project,一个project也可以有多个子project组成。 POM: POM(pom.xml)是Maven的核心文件,它是指示Maven如何工作的元数据文件,类似ant的build.xml文件。 pom.xml文件应该位于每个Project的根目录下 GroupId: 顾名思义,这个应该是公司名或组织名。 ArtifactId: 构建出来的文件名,一般来说或,这个也是project名 Packaging: 项目打包的类型。可以是将jar、war、rar、ear、pom,不写的话默认是jar Version: 项目的版本。项目的唯一标识由groupId+artifactId+packaging+version
关键名词 Dependency: 为了能够build或运行,一个典型的javaproject会依赖其他的包,在Maven中,这些被依赖的包就被称为dependency。 这个是我们最常用的一个标签 Plug-in: Maven是有插件组织的,它的每一个功能都是由插件提供的。 主要的插件是由java来写的,但是他也支持beanshell和ant脚本编写的插件。 Repository: 仓库用来存放artifact的,可以是本地仓库,也可以是远程仓库。 Maven是由一个默认的仓库 Snapshot: 工程中可以(也应该)有这样一个特殊的版本 这个版本可以告诉Maven,该工程正在处于开发阶段,会经常更新(但还为发布)。 当其他工程依赖此类型的artifact时,Maven会在仓库中寻找该artifact的最新版本,并自动下载、使用该最新版本。
MavenBuild Life Cycle
MavenBuild Life Cycle 软件项目一般都有相似的开发过程: 准备、编译、测试、打包和部署 在执行某一个生命周期时,Maven会首先执行该生命周期之前的其他周期。 Maven将上述的过程称为Buil Life Cycle。 在Maven中,这些生命周期有一系列的短语组成,每个短语对应一个或多个操作;或对应一个或多个goal。 在执行某一个生命周期时,Maven会首先执行该生命周期之前的其他周期。 如要执行compile,那么它会先执行validate,generate- source,process-source和generate-resources,最后在执行complie本身。
Maven中默认的生命周期短语
标准目录布局 Maven为Project中的源文件、资源文件、配置文件、生成的输出和文档都定制了一套标准的目录结构。 Maven鼓励使用标准的目录布局,这样就不用进行额外的配置了,而且还有助于各个不同工程之间的链接。   当然Maven也支持定制个性目录结构,但是这个就需要更多的配置了。
Maven提供的缺省目录模板
Maven的优点 build逻辑可以被重用。 在Ant中可能需要多次重复地写相同的语句,但由于POM的继承性,可以复用其它的POM文件中的语句。这样既可以写出清晰的build语句,又可以构造出层次关系良好的build工程。 不必关注build工作的实现细节。 我们只需要使用一些build生命周期短语就可以达到我们的目标,而不必管Maven是如何做到这些的。 只需要告诉Maven要安装(install),那么它自然就会验证,编译,打包,及安装。 Maven会自动加载工程依赖的artifact所依赖的其它artifact(Transitive Dependency),而不用显示的将这些artifact全部写到dependency中。 如果完全使用Maven的标准目录布局,那么可以极大地减少配置细节。
使用Maven创建项目 可以使用Maven的archetype插件来创建新工程 mvnarchetype:create -DgroupId=com.kaiqi -DartifactId=maven-demo-component –DpackageName=com.kaiqi.maven.demo.component mvnarchetype:create -DgroupId=com.kaiqi -DartifactId=maven-demo-webapp  -DarchetypeArtifactId=maven-archetype-webapp
Maven常用命令 mvn clean 清除之前打包内容 mvn test 执行maven测试用例(junit整合) mvn test –Dtest=ClassName 执行某一个测试类 mvn package 打包当前项目 mvn install 将当前项目打包并且安装到本地仓库 mvneclipse:eclipse 将maven项目环境转换成eclipse项目 mvndependency:tree 查看maven项目的依赖树 mvn install –Dmaven.test.skip 安装项目时跳过测试
谢谢!

More Related Content

Similar to Maven的简单介绍及基本应用

Maven私服安装,Maven使用教程
Maven私服安装,Maven使用教程Maven私服安装,Maven使用教程
Maven私服安装,Maven使用教程
kangzj
 
Maven in eclipse practices
Maven in eclipse practicesMaven in eclipse practices
Maven in eclipse practices
Pei-Tang Huang
 
Hadoop程式開發環境
Hadoop程式開發環境Hadoop程式開發環境
Hadoop程式開發環境
立鼎 蘇
 
Java 1(Java概述)
Java 1(Java概述)Java 1(Java概述)
Java 1(Java概述)
xzdbd
 
000 北京圣思园教育科技有限公司第一期面授培训大纲
000 北京圣思园教育科技有限公司第一期面授培训大纲000 北京圣思园教育科技有限公司第一期面授培训大纲
000 北京圣思园教育科技有限公司第一期面授培训大纲
ArBing Xie
 
Ibmzf2
Ibmzf2Ibmzf2
Ibmzf2
daoopp
 
03.wls depoly jdbc
03.wls depoly jdbc03.wls depoly jdbc
03.wls depoly jdbc
Meng He
 
Top100summit automan x之框架介绍 王超
Top100summit automan x之框架介绍 王超Top100summit automan x之框架介绍 王超
Top100summit automan x之框架介绍 王超
drewz lin
 
数据库持续集成
数据库持续集成数据库持续集成
数据库持续集成
wait4friend
 

Similar to Maven的简单介绍及基本应用 (20)

Maven初级培训
Maven初级培训Maven初级培训
Maven初级培训
 
20170830 2nd sre build and deployment scripting
20170830 2nd sre build and deployment scripting20170830 2nd sre build and deployment scripting
20170830 2nd sre build and deployment scripting
 
基于Ivy ant的java构建初探
基于Ivy ant的java构建初探基于Ivy ant的java构建初探
基于Ivy ant的java构建初探
 
Maven私服安装,Maven使用教程
Maven私服安装,Maven使用教程Maven私服安装,Maven使用教程
Maven私服安装,Maven使用教程
 
Maven in eclipse practices
Maven in eclipse practicesMaven in eclipse practices
Maven in eclipse practices
 
Hadoop程式開發環境
Hadoop程式開發環境Hadoop程式開發環境
Hadoop程式開發環境
 
使用 Maven 做项目构建
使用 Maven 做项目构建使用 Maven 做项目构建
使用 Maven 做项目构建
 
Java 1(Java概述)
Java 1(Java概述)Java 1(Java概述)
Java 1(Java概述)
 
000 北京圣思园教育科技有限公司第一期面授培训大纲
000 北京圣思园教育科技有限公司第一期面授培训大纲000 北京圣思园教育科技有限公司第一期面授培训大纲
000 北京圣思园教育科技有限公司第一期面授培训大纲
 
用Maven管理專案的依賴關係
用Maven管理專案的依賴關係用Maven管理專案的依賴關係
用Maven管理專案的依賴關係
 
Ch13 整合Spring MVC
Ch13  整合Spring MVC Ch13  整合Spring MVC
Ch13 整合Spring MVC
 
Ibmzf2
Ibmzf2Ibmzf2
Ibmzf2
 
Ch13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/SecurityCh13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/Security
 
Laravel 5.2 教學
Laravel 5.2 教學Laravel 5.2 教學
Laravel 5.2 教學
 
03.wls depoly jdbc
03.wls depoly jdbc03.wls depoly jdbc
03.wls depoly jdbc
 
Asp.net mvc 從無到有 -twMVC#2
Asp.net mvc 從無到有 -twMVC#2Asp.net mvc 從無到有 -twMVC#2
Asp.net mvc 從無到有 -twMVC#2
 
twMVC#02 | ASP.NET MVC 從無到有
twMVC#02 | ASP.NET MVC 從無到有twMVC#02 | ASP.NET MVC 從無到有
twMVC#02 | ASP.NET MVC 從無到有
 
Vue
VueVue
Vue
 
Top100summit automan x之框架介绍 王超
Top100summit automan x之框架介绍 王超Top100summit automan x之框架介绍 王超
Top100summit automan x之框架介绍 王超
 
数据库持续集成
数据库持续集成数据库持续集成
数据库持续集成
 

More from Tony Deng

《我们如何工作》—质量保障
《我们如何工作》—质量保障《我们如何工作》—质量保障
《我们如何工作》—质量保障
Tony Deng
 
《我们如何工作》- 产品经理和工程师如何有效沟通
《我们如何工作》- 产品经理和工程师如何有效沟通《我们如何工作》- 产品经理和工程师如何有效沟通
《我们如何工作》- 产品经理和工程师如何有效沟通
Tony Deng
 
技术债务的形成
技术债务的形成技术债务的形成
技术债务的形成
Tony Deng
 
我们不了解的计算机世界(二)
我们不了解的计算机世界(二)我们不了解的计算机世界(二)
我们不了解的计算机世界(二)
Tony Deng
 
我们不了解的计算机世界(一)--Unix目录结构的来历
我们不了解的计算机世界(一)--Unix目录结构的来历我们不了解的计算机世界(一)--Unix目录结构的来历
我们不了解的计算机世界(一)--Unix目录结构的来历
Tony Deng
 
实时任务调度
实时任务调度实时任务调度
实时任务调度
Tony Deng
 
节约内存:Instagram的redis实践
节约内存:Instagram的redis实践节约内存:Instagram的redis实践
节约内存:Instagram的redis实践
Tony Deng
 

More from Tony Deng (20)

一页纸项目管理
一页纸项目管理一页纸项目管理
一页纸项目管理
 
Docker at the gate
Docker at the gateDocker at the gate
Docker at the gate
 
《我们如何工作》—质量保障
《我们如何工作》—质量保障《我们如何工作》—质量保障
《我们如何工作》—质量保障
 
《我们如何工作》- 产品经理和工程师如何有效沟通
《我们如何工作》- 产品经理和工程师如何有效沟通《我们如何工作》- 产品经理和工程师如何有效沟通
《我们如何工作》- 产品经理和工程师如何有效沟通
 
我们为何工作--找到正确的工作方式
我们为何工作--找到正确的工作方式我们为何工作--找到正确的工作方式
我们为何工作--找到正确的工作方式
 
SDN介绍
SDN介绍SDN介绍
SDN介绍
 
漫谈职业规划
漫谈职业规划漫谈职业规划
漫谈职业规划
 
一次Http请求过程分析
一次Http请求过程分析一次Http请求过程分析
一次Http请求过程分析
 
图解Git
图解Git图解Git
图解Git
 
一次Code review引发的思考
一次Code review引发的思考一次Code review引发的思考
一次Code review引发的思考
 
My sql迁移总结
My sql迁移总结My sql迁移总结
My sql迁移总结
 
一次项目的探险旅程
一次项目的探险旅程一次项目的探险旅程
一次项目的探险旅程
 
Scrum敏捷开发模型
Scrum敏捷开发模型Scrum敏捷开发模型
Scrum敏捷开发模型
 
Shoutv 冯晓东
Shoutv 冯晓东Shoutv 冯晓东
Shoutv 冯晓东
 
技术债务的形成
技术债务的形成技术债务的形成
技术债务的形成
 
我们不了解的计算机世界(二)
我们不了解的计算机世界(二)我们不了解的计算机世界(二)
我们不了解的计算机世界(二)
 
HBase
HBaseHBase
HBase
 
我们不了解的计算机世界(一)--Unix目录结构的来历
我们不了解的计算机世界(一)--Unix目录结构的来历我们不了解的计算机世界(一)--Unix目录结构的来历
我们不了解的计算机世界(一)--Unix目录结构的来历
 
实时任务调度
实时任务调度实时任务调度
实时任务调度
 
节约内存:Instagram的redis实践
节约内存:Instagram的redis实践节约内存:Instagram的redis实践
节约内存:Instagram的redis实践
 

Maven的简单介绍及基本应用