欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Maven总结 博客分类: Java-maven javamaven 

程序员文章站 2024-03-25 16:29:04
...

                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关系图:


Maven总结
            
    
    博客分类: Java-maven javamaven 
 

   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 
  • 大小: 4.6 KB
相关标签: java maven