Maven总结

                Maven总结

1.maven简介

  maven是一个项目管理工具。Maven是跨平台的,这意味着无论是在windows上,还是Linux上,都可以使用同样的命令。Maven主要服务于基于Java平台的项目构建、依赖管理和项目信息管理。

2.maven主要功能

 (1)依赖管理

     2.1.1 坐标

     为了能够自动化的解析任何一个Java构件,maven就必须将他们唯一的标识,这就是依赖管理的底层基础--坐标。Maven的坐标元素包括groupIdartifactIdversionpackagingclassifier

    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有其固定的目录结构。

猜你喜欢

转载自youcp999.iteye.com/blog/2321705
今日推荐