maven的简单介绍及基本应用
DESCRIPTION
TRANSCRIPT
![Page 1: Maven的简单介绍及基本应用](https://reader036.vdocuments.mx/reader036/viewer/2022082408/54b67f044a7959e0588b45ad/html5/thumbnails/1.jpg)
Maven 的简单介绍及基本应用
Tony Denghttp://friendfeed.com/tonydeng
http://twitter.com/wolfdenghttp://delicious.com/wolf.denghttp://wolfchina.blogbus.com
![Page 2: Maven的简单介绍及基本应用](https://reader036.vdocuments.mx/reader036/viewer/2022082408/54b67f044a7959e0588b45ad/html5/thumbnails/2.jpg)
Maven 定义
• Maven 是 Apache 的一个顶级的项目– http://maven.apache.org/
• 一个较正式的 Apache Maven定 义:– Maven 是一个项目管理工具,它包含了一个项目对象
模型 (Project Object Model) ,一组标准集合,一个项目生命周期 (Project Lifecycle) ,一个依赖管理系统 (Dependency Management System) ,和用来运行定义在生命周期阶段 (phase) 中插件 (plugin) 目标 (goal) 的逻辑。
![Page 3: Maven的简单介绍及基本应用](https://reader036.vdocuments.mx/reader036/viewer/2022082408/54b67f044a7959e0588b45ad/html5/thumbnails/3.jpg)
Maven 的安装
• 具体的安装, Maven 的官网上都有文档,大家可以自己去看看。
• 需要注意的内容:– 环境变量– setting.xml 中本地仓库的配置
![Page 4: Maven的简单介绍及基本应用](https://reader036.vdocuments.mx/reader036/viewer/2022082408/54b67f044a7959e0588b45ad/html5/thumbnails/4.jpg)
关键名词• 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的简单介绍及基本应用](https://reader036.vdocuments.mx/reader036/viewer/2022082408/54b67f044a7959e0588b45ad/html5/thumbnails/5.jpg)
关键名词
• Dependency:– 为了能够 build 或运行,一个典型的 java project 会依赖其他的包,在 Maven 中,
这些被依赖的包就被称为 dependency 。– 这个是我们最常用的一个标签
• Plug-in :– Maven 是有插件组织的,它的每一个功能都是由插件提供的。– 主要的插件是由 java 来写的,但是他也支持 beanshell 和 ant 脚本编写的插件。
• Repository :– 仓库用来存放 artifact 的,可以是本地仓库,也可以是远程仓库。– Maven 是由一个默认的仓库
• Snapshot :– 工程中可以(也应该)有这样一个特殊的版本– 这个版本可以告诉 Maven ,该工程正在处于开发阶段,会经常更新(但还为发
布)。– 当其他工程依赖此类型的 artifact 时, Maven 会在仓库中寻找该 artifact 的最新
版本,并自动下载、使用该最新版本。
![Page 6: Maven的简单介绍及基本应用](https://reader036.vdocuments.mx/reader036/viewer/2022082408/54b67f044a7959e0588b45ad/html5/thumbnails/6.jpg)
Maven Build Life Cycle
![Page 7: Maven的简单介绍及基本应用](https://reader036.vdocuments.mx/reader036/viewer/2022082408/54b67f044a7959e0588b45ad/html5/thumbnails/7.jpg)
Maven Build Life Cycle
• 软件项目一般都有相似的开发过程:– 准备、编译、测试、打包和部署
• 在执行某一个生命周期时, Maven 会首先执行该生命周期之前的其他周期。
• Maven 将上述的过程称为 Buil Life Cycle 。• 在 Maven 中,这些生命周期有一系列的短语组成,每个短语
对应一个或多个操作;或对应一个或多个 goal 。• 在执行某一个生命周期时, Maven 会首先执行该生命周期之
前的其他周期。– 如要执行 compile ,那么它会先执行 validate,generate-
source,process-source 和 generate-resources ,最后在执行complie 本身。
![Page 8: Maven的简单介绍及基本应用](https://reader036.vdocuments.mx/reader036/viewer/2022082408/54b67f044a7959e0588b45ad/html5/thumbnails/8.jpg)
Maven 中默认的生命周期短语
![Page 9: Maven的简单介绍及基本应用](https://reader036.vdocuments.mx/reader036/viewer/2022082408/54b67f044a7959e0588b45ad/html5/thumbnails/9.jpg)
标准目录布局
• Maven 为 Project 中的源文件、资源文件、配置文件、生成的输出和文档都定制了一套标准的目录结构。
• Maven 鼓励使用标准的目录布局,这样就不用进行额外的配置了,而且还有助于各个不同工程之间的链接。
• 当然 Maven 也支持定制个性目录结构,但是这个就需要更多的配置了。
![Page 10: Maven的简单介绍及基本应用](https://reader036.vdocuments.mx/reader036/viewer/2022082408/54b67f044a7959e0588b45ad/html5/thumbnails/10.jpg)
Maven 提供的缺省目录模板
![Page 11: Maven的简单介绍及基本应用](https://reader036.vdocuments.mx/reader036/viewer/2022082408/54b67f044a7959e0588b45ad/html5/thumbnails/11.jpg)
Maven 的优点
• build 逻辑可以被重用。– 在 Ant 中可能需要多次重复地写相同的语句,但由于 POM 的继承性,
可以复用其它的 POM 文件中的语句。这样既可以写出清晰的 build 语句,又可以构造出层次关系良好的 build 工程。
• 不必关注 build 工作的实现细节。– 我们只需要使用一些 build 生命周期短语就可以达到我们的目标,而不必管 Maven 是如何做到这些的。
– 只需要告诉 Maven 要安装 (install) ,那么它自然就会验证,编译,打包,及安装。
• Maven 会自动加载工程依赖的 artifact所依赖的其它artifact(Transitive Dependency) ,而不用显示的将这些artifact全部写到dependency 中。
• 如果完全使用 Maven 的标准目录布局,那么可以极大地减少配置细节。
![Page 12: Maven的简单介绍及基本应用](https://reader036.vdocuments.mx/reader036/viewer/2022082408/54b67f044a7959e0588b45ad/html5/thumbnails/12.jpg)
使用 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的简单介绍及基本应用](https://reader036.vdocuments.mx/reader036/viewer/2022082408/54b67f044a7959e0588b45ad/html5/thumbnails/13.jpg)
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的简单介绍及基本应用](https://reader036.vdocuments.mx/reader036/viewer/2022082408/54b67f044a7959e0588b45ad/html5/thumbnails/14.jpg)
谢谢!