Maven总结 博客分类: Java-maven javamaven
Maven总结
1.maven简介
maven是一个项目管理工具。Maven是跨平台的,这意味着无论是在windows上,还是Linux上,都可以使用同样的命令。Maven主要服务于基于Java平台的项目构建、依赖管理和项目信息管理。
2.maven主要功能
(1)依赖管理
2.1.1 坐标
为了能够自动化的解析任何一个Java构件,maven就必须将他们唯一的标识,这就是依赖管理的底层基础--坐标。Maven的坐标元素包括groupId、artifactId、version、packaging、classifier。
2.1.2 依赖范围
Maven在编译项目代码时需要使用一套classpath,在编译和执行测试时会使用另外一套classpath,最后,在实际运行时,又会使用一套classpath。依赖范围就是用来控制依赖与这三种classpath(编译classpath、测试classpath、运行classpath)的关系。maven有以下几种依赖范围:compile-编译依赖范围(默认)、test-测试依赖范围(仅测试有效)、provided-已提供依赖范围(编译测试有效,运行无效)、runtime-运行时依赖范围(测试运行有效,编译时无效)、system-系统依赖范围(需谨慎使用)、import-导入依赖范围(不影响)。依赖范围和classpath关系图:
2.1.3传递性依赖
Maven的传递性依赖简化和方便了依赖声明。Maven会解析各个直接依赖的pom,将那些没有必要的间接依赖,以依赖性传递的形式引入到当前项目中。
2.1.4依赖调解
当两条不同的路劲上有相同的两个版本X时会造成依赖重复,因此必须选择一个。依赖调解的第一原则是:路劲最优者优先。第二原则是:第一声明者优先。
2.1.5可选依赖
理想情况下,是不应该使用可选依赖的,不具备单一职责性原则。
2.1.6排除依赖
用于排除传递性依赖。
2.1.7归类依赖
依赖归类主要用于解决避免重复的定义。用Maven属性定义一个子元素,Maven运行时会将其换为实际值。
2.1.8优化依赖
对Maven进行优化,如除去多余的依赖,显示的声明某些必要的依赖。
2.1.9Maven仓库
对于Maven来说,仓库只分为本地仓库和远程仓库。下载Nexus可建立自己的私服。
(2)项目构建
2.1 生命周期
基础:
Maven的生命周期就是为了对所有的构建过程进行抽象和统一。生命周期包含了项目的清理、初始化、编译、测试、打包、集成测试、验证、部署和站点生成等几乎所有构建步骤。Maven的生命周期是抽象的,实际的任务由插件完成。
详解:
Maven拥有三套相互独立的生命周期,分别是clean(目的是清理项目),default(目的是构建项目),site(目的是建立项目站点)。而每个生命周期都包含一些阶段,这些阶段都是有序的,并且后面的阶段依赖于前面的阶段。从命令行执行Maven任务的最主要方式就是调用Maven的生命周期阶段。
2.2 插件
一个插件具有多个功能,每个功能就是一个插件目标。Maven的生命周期与插件相互绑定,用以完成实际的构建任务。具体而言,是生命周期的阶段与插件的目标相互绑定。
2.3 内置绑定
为了让用户几乎不用配置就能构建Maven项目,Maven在核心为一些主要的生命周期阶段绑定了很多插件目标。
2.4 自定义绑定
除了内置绑定外,用户还能够自己选择将某个插件目标绑定到生命周期的某个阶段,这种绑定方式能让Maven项目在构建过程中执行更多更富特色的任务。
<!--[if !supportLists]-->(3)<!--[endif]-->项目信息管理
使用site插件可生成项目站点,能够帮助聚合项目信息,促进团队间的交流。
<!--[if !supportLists]-->3.<!--[endif]-->其他特性
<!--[if !supportLists]-->(1)<!--[endif]-->聚合与继承
Maven的聚合特性能够把项目的各个模块聚合在一起构建,而Maven的继承特性能帮助抽取各模块相同的依赖和插件等配置。前者主要是为了方便快速构建项目,后者主要是为了消除重复配置。
<!--[if !supportLists]-->(2)<!--[endif]-->构建web应用
Maven的核心思想是“约定优于配置”。Maven有其固定的目录结构。
推荐阅读
-
Maven总结 博客分类: Java-maven javamaven
-
Maven总结 博客分类: Java-maven javamaven
-
大总结 博客分类: 大总结 听课总结
-
Mongodb java api操作 博客分类: 技术总结其他开源框架 Mongodbjavaapi操作
-
如何提出一个好的问题? 博客分类: 技术非技术总结 提问谦虚反问礼节为什么
-
mvn 博客分类: 雕虫小技 maven单元测试ApacheHTML
-
如何快速学习一门技术或进入一个岗位 博客分类: 产品、管理、人生技术非技术总结 学习、转岗、技术、总结、反思
-
win8安装dotnetfx3.5报错的解决办法 博客分类: 技术非技术总结
-
mvn 博客分类: 雕虫小技 maven单元测试ApacheHTML
-
CentOS安装nexus(Maven仓库管理器) 博客分类: 开发(版本)环境工具 nexus