`
阅读更多

本人博客文章网址:https://www.peretang.com/basic-knowledge-of-maven/


Maven简介

  Maven , 用于Java项目的构建 , 依赖管理 , 项目信息管理的项目管理工具.

  是Apache组织旗下的开源项目.

  Maven核心功能是一个具有跨平台特性的构建工具 , 帮助我们自动化构建 , 并提供一个完整的优化的构建生命周期模型 , 和构建任务所需的基础组件/插件.

  Maven还是一个依赖管理工具和项目信息管理工具 , 方便开发人员更好的管理依赖与避免项目信息混乱等问题.

  Maven还提供了一套标准的约定规则 , 减轻不同项目的差异性.

 

Maven特性

Maven标准约定规则

  Maven是一个约定优于配置的工具 , 只要遵守Maven的约定 , 那么只需要少量的配置 ,Maven就能帮助你完成你所需的大部分工作

 

Maven构建

  Maven统一了项目构建时的阶段 , 提供了一个标准化的构建阶段模型:

  1. validate (验证) : 验证项目的所有必要信息的正确性

  2. initialize (初始化) : 初始化构建状态 , 例如设置属性或创建目录

  3. generate-sources,process-sources (处理源文件) : 处理项目源文件

  4. generate-resources,process-resources (处理资源文件) : 对资源文件进行处理 , 并将其复制到目标目录 , 等待打包

  5. compile,process-classes (主代码编译) : 编译项目的主代码至目标文件夹

  6. generate-test-sources,process-test-sources (处理测试源文件) : 对项目测试源文件进行处理

  7. generate-test-resources,process-test-resources (处理测试资源文件) : 对项目测试资源文件进行处理 , 并将其复制到目标目录

  8. test-compile,process-test-classes (测试代码编译) : 编译项目的测试源代码至目标文件夹

  9. test (测试) : 使用项目定义的单元测试框架进行测试

  10. prepare-package,package (打包) : 将编译后的主代码打包成所需的格式"软件包"

  11. pre-integration-test,integration-test,post-integration-test (集成测试) : 如需要 , 会将打包好的"软件包"部署到可以运行集成测试的环境中进行集成测试

  12. verify (校验) : 运行定义的检查步骤以验证"软件包"是否有效 或 是否符合质量标准

  13. install (安装) : 将"软件包"安装到本地仓库[1]中 , 以作为本地其他项目的依赖

  14. deploy (部署) : 将"软件包"发布到远程仓库[2]中 , 以供其他人使用与项目共享

Maven依赖管理与项目信息管理

  关于依赖管理方面 , 在目前这个年代 , 几乎每个Java应用都会有第三方的开源库依赖 , 若还是使用手工的方式管理会严重影响开发人员的效率 , 并会因为依赖增多的问题的增加更加复杂 , 所幸Maven提供了优秀的解决方案 , 通过引入"GroupId","ArtifactId","Version","type"等元素为Java的依赖问题提供了一个坐标系统 , 从而帮助开发人员更好的管理项目.

  关于项目信息管理方面 , 当开发人员使用第三方开源库时 , 总会有需要查看文档 , 源代码等需求 , 在使用Maven之前 , 开发人员总需要去各大搜索引擎去查找这些信息 , 但当引入Maven后 , 这些关于项目的信息 , 可以统一在POM文件[3]中声明 , 方便其他人的查找 , 与项目信息的统一管理.

 

POM文件

  POM文件是Maven的一大核心内容 , 其全称为"Project Object Model"即项目对象模型.
  其用于定义项目的基本信息 , 指定项目如何构建 , 声明项目依赖 ; POM文件提现了Maven的一大优点 , 即能让项目对象模型最大程度与项目代码等相独立 , 即把两者的关系进行了解耦.

 

Maven坐标系统

  Maven构件 : 指的是平时项目打包完成后的的一些jar , war等文件.

  Maven坐标为各种构件引入了秩序 , 任何一个构件都必须明确定义自己的唯一坐标 ; 而一组Maven坐标就是通过以下一组元素定义的 :

  groupId : 定义当前Maven项目隶属的实际项目

  artifactId : 定义实际项目中的一个Maven模块/项目 , 推荐使用groupId作为artifactId的前缀

  version : 定义Maven模块/项目所处的版本 , Maven定义了一套完整的版本规范

  packaging : 定义Maven模块/项目的打包方式

  classifier : 帮助定义一些与主构件对应的附属构件

  Maven仓库就是基于Maven的坐标系统

 

Maven仓库

  得益于Maven的坐标机制 , 任何Maven项目使用的任何一个"构件"的方式都是相同的 ; 在此基础上 , Maven可以在某个位置统一储存所有Maven项目共享的"构件" , 这就是仓库 ; 因为仓库 , 所以Maven项目不再需要各自储存依赖的"构件" , 转而只需声明这些依赖的坐标 , 在需要的时候 , Maven会自动根据坐标找到仓库中的"构件" , 并使用它们.

  仓库的分类有两种 , 本地仓库与远程仓库 ; 当Maven根据坐标寻找"构件"的时候 , Maven会先查看本地仓库 , 如果本地仓库存在此构件 , 则直接使用 ; 如果本地仓库不存在此"构件" , 或需要查看是否有更新的版本 , Maven就会去远程仓库查找 , 当发现所需的"构件"后 , 就会下载到本地仓库后再使用 ; 如果最终本地仓库与远程仓库都无法找到所需要的"构件"时 , Maven就会报错.

 

 

参考

  Apache Maven

  Maven实战

0
1
分享到:
评论

相关推荐

    maven基础知识

    【 Maven 基础知识详解】 Maven 是一个强大的项目管理工具,主要应用于Java开发领域。它基于项目对象模型(Project Object Model,简称POM),能够帮助开发者管理和构建Java项目,自动化构建过程,如编译、测试、...

    Maven知识.pdf

    Maven是目前Java领域广泛使用的项目管理工具,它通过一种项目对象模型(POM)来管理项目的...随着Java生态的不断进步,Maven作为其中的核心工具,其地位和作用也愈发重要,是每个Java开发者都应当熟练掌握的知识点。

    day24_maven基础1

    【Maven基础1】知识点详解 ...以上是Maven基础知识点的详细介绍,学习Maven能帮助开发者更高效地管理项目,简化构建流程,提高团队协作效率。通过理解和熟练使用这些知识点,可以更好地应对复杂项目的需求和挑战。

    web27_maven基础-课堂笔记.md

    ### Maven 基础知识点详解 #### 一、Maven 概述 1. **概念** - **定义**:Maven 是一个基于项目对象模型(Project Object Model, POM)的软件项目管理和综合工具。 - **核心功能**: - **依赖管理**:自动下载...

    Maven视频教程

    ### Maven基础知识 1. **Maven简介**:Apache Maven 是一个项目管理和理解工具。它基于项目对象模型(POM),通过一个小段描述如何构建项目和项目的依赖关系,然后就可以管理项目的构建、报告和文档。 2. **Maven的...

    maven+myeclipse

    一、Maven基础知识 Maven是Apache软件基金会开发的一个项目管理工具,它通过一个统一的构建过程和约定优于配置的原则,帮助开发者管理项目依赖、构建工件,并提供了一种标准化的方式来组织项目结构。Maven的配置...

    软件开发+Maven技术+Maven安装与配置+基础课程

    #### Maven基础知识与核心概念 Maven是一款非常流行的项目管理和构建工具,在Java项目中被广泛应用。它的核心特性之一是通过POM(Project Object Model)文件来管理项目的构建、依赖关系和其他配置。POM是一个XML...

    maven 实战 in action 中文版 3.3

    以上只是对Maven基础知识的简要概述,《Maven实战In Action中文版3.3》这本书中还涵盖了更深入的话题,如 profiles、聚合项目、持续集成、插件开发等,是Java开发者不可或缺的参考资料。通过学习和实践,你可以充分...

    超详细Maven快速入门到精通.txt打包整理.zip

    【Maven基础知识】 Maven是Java开发中的一个核心工具,它的主要功能包括构建、依赖管理和项目信息管理。Maven通过使用一个项目对象模型(Project Object Model,POM),可以自动化项目的构建过程,如编译、测试、...

    尚硅谷maven视屏

    ### Maven基础知识 #### 1. 什么是Maven? Apache Maven是一个项目管理和理解工具。基于项目对象模型(POM),通过一小段描述信息来管理项目的构建、报告和文档。Maven可以将构建过程抽象为一系列阶段(Phase),并...

    MyEclipse开发Maven工程

    ### Maven基础知识 Maven是一种自动化构建工具,用于Java项目的依赖管理和构建过程自动化。它通过一个项目对象模型(POM)来管理项目的构建、报告和文档。Maven的核心在于其强大的生命周期管理机制,即一系列执行顺序...

    《Maven实战》

    Maven基础知识** - **生命周期**:Maven的生命周期是指一系列构建项目的目标集合,按照特定顺序执行。例如,`clean`生命周期用于清理项目,而`default`生命周期则用于编译、测试和打包项目。 - **插件**:Maven...

    maven权威指南8th edition

    综上所述,《Maven权威指南》是一本全面介绍Maven基础知识和高级特性的书籍。通过对Maven的基本概念、安装配置、核心特性和培训资源的详细介绍,读者可以深入理解Maven的工作原理和使用方法,从而有效地应用于实际...

    Maven实战.pdf

    ### Maven基础知识 #### 1. Maven简介 Apache Maven是一个项目管理和综合工具,主要用于Java项目的构建、依赖管理和文档生成等任务。它通过一个项目对象模型(POM)来管理项目的构建、报告和文档,并且能够帮助开发者...

    Maven 是一个强大的项目管理和构建工具,主要用于 Java 项目的构建、依赖管理和项目信息管理

    本教程可用于自学Maven基础知识、查看实际例子或者查阅相关技术文档来帮助解决具体实践中遇到的各种难题,并能进一步利用GitHub上的开源工程来进行实际操练;也可用于进阶使用者查阅高级话题或特定问题解决方案时...

    Maven.docx笔记

    二、Maven基础知识: 1. 项目对象模型(Project Object Model, POM):Maven项目的核心是POM,它是项目配置信息的XML文件,包括项目属性、依赖、构建目标等。 2. 依赖管理:Maven通过POM自动管理项目所需的库文件,...

    Maven实战_扫描版不带目录

    ### Maven基础知识 #### 1. 什么是Maven? Apache Maven是一种项目管理和理解工具。它提供了一个项目对象模型(POM),通过一组规则和最佳实践来构建软件项目。Maven可以用于构建任何类型的项目,但它主要用于Java...

Global site tag (gtag.js) - Google Analytics