maven的简单介绍及基本应用

14
Maven 的的的的的的的的的的 Tony Deng http://friendfeed.com/tonydeng http://twitter.com/wolfdeng http://delicious.com/wolf.deng http://wolfchina.blogbus.com

Upload: tony-deng

Post on 14-Jan-2015

481 views

Category:

Technology


3 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Maven的简单介绍及基本应用

Maven 的简单介绍及基本应用

Tony Denghttp://friendfeed.com/tonydeng

http://twitter.com/wolfdenghttp://delicious.com/wolf.denghttp://wolfchina.blogbus.com

Page 2: Maven的简单介绍及基本应用

Maven 定义

• Maven 是 Apache 的一个顶级的项目– http://maven.apache.org/

• 一个较正式的 Apache Maven定 义:– Maven 是一个项目管理工具,它包含了一个项目对象

模型 (Project Object Model) ,一组标准集合,一个项目生命周期 (Project Lifecycle) ,一个依赖管理系统 (Dependency Management System) ,和用来运行定义在生命周期阶段 (phase) 中插件 (plugin) 目标 (goal) 的逻辑。

Page 3: Maven的简单介绍及基本应用

Maven 的安装

• 具体的安装, Maven 的官网上都有文档,大家可以自己去看看。

• 需要注意的内容:– 环境变量– setting.xml 中本地仓库的配置

Page 4: Maven的简单介绍及基本应用

关键名词• 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

Page 5: Maven的简单介绍及基本应用

关键名词

• Dependency:– 为了能够 build 或运行,一个典型的 java project 会依赖其他的包,在 Maven 中,

这些被依赖的包就被称为 dependency 。– 这个是我们最常用的一个标签

• Plug-in :– Maven 是有插件组织的,它的每一个功能都是由插件提供的。– 主要的插件是由 java 来写的,但是他也支持 beanshell 和 ant 脚本编写的插件。

• Repository :– 仓库用来存放 artifact 的,可以是本地仓库,也可以是远程仓库。– Maven 是由一个默认的仓库

• Snapshot :– 工程中可以(也应该)有这样一个特殊的版本– 这个版本可以告诉 Maven ,该工程正在处于开发阶段,会经常更新(但还为发

布)。– 当其他工程依赖此类型的 artifact 时, Maven 会在仓库中寻找该 artifact 的最新

版本,并自动下载、使用该最新版本。

Page 6: Maven的简单介绍及基本应用

Maven Build Life Cycle

Page 7: Maven的简单介绍及基本应用

Maven Build Life Cycle

• 软件项目一般都有相似的开发过程:– 准备、编译、测试、打包和部署

• 在执行某一个生命周期时, Maven 会首先执行该生命周期之前的其他周期。

• Maven 将上述的过程称为 Buil Life Cycle 。• 在 Maven 中,这些生命周期有一系列的短语组成,每个短语

对应一个或多个操作;或对应一个或多个 goal 。• 在执行某一个生命周期时, Maven 会首先执行该生命周期之

前的其他周期。– 如要执行 compile ,那么它会先执行 validate,generate-

source,process-source 和 generate-resources ,最后在执行complie 本身。

Page 8: Maven的简单介绍及基本应用

Maven 中默认的生命周期短语

Page 9: Maven的简单介绍及基本应用

标准目录布局

• Maven 为 Project 中的源文件、资源文件、配置文件、生成的输出和文档都定制了一套标准的目录结构。

• Maven 鼓励使用标准的目录布局,这样就不用进行额外的配置了,而且还有助于各个不同工程之间的链接。

• 当然 Maven 也支持定制个性目录结构,但是这个就需要更多的配置了。

Page 10: Maven的简单介绍及基本应用

Maven 提供的缺省目录模板

Page 11: Maven的简单介绍及基本应用

Maven 的优点

• build 逻辑可以被重用。– 在 Ant 中可能需要多次重复地写相同的语句,但由于 POM 的继承性,

可以复用其它的 POM 文件中的语句。这样既可以写出清晰的 build 语句,又可以构造出层次关系良好的 build 工程。

• 不必关注 build 工作的实现细节。– 我们只需要使用一些 build 生命周期短语就可以达到我们的目标,而不必管 Maven 是如何做到这些的。

– 只需要告诉 Maven 要安装 (install) ,那么它自然就会验证,编译,打包,及安装。

• Maven 会自动加载工程依赖的 artifact所依赖的其它artifact(Transitive Dependency) ,而不用显示的将这些artifact全部写到dependency 中。

• 如果完全使用 Maven 的标准目录布局,那么可以极大地减少配置细节。

Page 12: Maven的简单介绍及基本应用

使用 Maven创建项目

• 可以使用 Maven 的 archetype 插件来创建新工程– mvn archetype:create -DgroupId=com.kaiqi -

DartifactId=maven-demo-component –DpackageName=com.kaiqi.maven.demo.component

– mvn archetype:create -DgroupId=com.kaiqi -DartifactId=maven-demo-webapp -DarchetypeArtifactId=maven-archetype-webapp

Page 13: Maven的简单介绍及基本应用

Maven 常用命令• mvn clean

– 清除之前打包内容• mvn test

– 执行 maven 测试用例( junit整合)• mvn test –Dtest=ClassName

– 执行某一个测试类• mvn package

– 打包当前项目• mvn install

– 将当前项目打包并且安装到本地仓库• mvn eclipse:eclipse

– 将 maven 项目环境转换成 eclipse 项目• mvn dependency:tree

– 查看 maven 项目的依赖树• mvn install –Dmaven.test.skip

– 安装项目时跳过测试

Page 14: Maven的简单介绍及基本应用

谢谢!