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总结了这些特点和命令规范,为开发者提供了一个标准化、规范化的项目构建工具。通过单继承机制,Maven使得项目之间能够实现依赖和插件的统一管理,有效避免了冲突。继承和聚合的特点使得Maven非常适合于管理和...
maven总结笔记-继承和聚合
** 总结** Maven 是Java开发中的强大工具,通过统一的配置文件和生命周期,简化了项目的构建和依赖管理。了解和掌握 Maven 的配置、生命周期和插件使用,能够极大地提高开发效率。通过深入学习 `maven基本配置.docx...
总结来说,Maven通过生命周期、阶段和插件的巧妙组合,实现了Java项目的自动化构建和管理。理解并熟练掌握这些概念,对于提升开发效率和维护项目质量至关重要。在实际使用中,可以根据项目需求,灵活运用Maven的各种...
### Maven环境搭建与配置详解 #### 一、Maven简介 Maven是Apache下的一个开源项目,它是一种项目管理和理解工具。通过一个中心信息管理的方式,Maven能够管理项目的构建、报告和文档。Maven使用描述性的XML文件来...
** 总结 ** Maven作为Java开发的重要工具,极大地提高了项目管理和构建效率。通过POM和依赖管理,它简化了项目的构建流程,而插件系统则提供了丰富的扩展功能。理解并熟练使用Maven,可以帮助开发者更专注于应用...
Maven总结** Maven简化了Java项目的构建、管理和部署过程,通过标准化的构建过程和依赖管理,降低了项目的复杂性。它提供了一套强大的工具集,使得开发者可以专注于编写代码,而非构建工具的配置。熟练掌握Maven,...
10. **Maven总结**:本书最后部分对Maven的关键概念和常用操作进行了总结,帮助读者巩固所学,同时提供了一些高级话题和实践建议,如 profiles、settings.xml的使用,以及Maven的最佳实践。 总的来说,这份电子板书...
**总结** Maven 3.5.2作为一个成熟的项目管理工具,极大地简化了Java开发中的构建和依赖管理。通过理解并熟练使用Maven,开发者可以更专注于编写代码,而无需关心构建过程的复杂性。在实际工作中,正确配置和利用...
maven知识的一些个人梳理,涉及到了Maven的生命周期和命令之类的。
### Maven知识总结 #### 一、Ant与Maven概述 - **Ant** 和 **Maven** 均为项目的构建工具,在软件开发过程中扮演着重要角色。Ant 是一个早期的构建工具,它提供了灵活的XML配置文件来描述构建流程,但缺乏高级特性...
总结来说,Apache Maven 3.2.5是一个强大而灵活的Java项目管理工具,它通过统一的构建生命周期、依赖管理和仓库机制,简化了项目的构建和维护工作。这个版本在性能和稳定性上做了优化,为开发者提供了更高效、更友好...
针对对初学者使用maven的遇到的问题的一些讲解 和学习的总结
【标题】:“nexus构建maven仓库总结(完善版2)” 在软件开发过程中,管理依赖库是一项重要的任务,而Nexus作为一个强大的仓库管理器,能够有效地帮助我们完成这一任务。Nexus不仅可以作为代理服务器缓存远程Maven...