Maven (POM+约定+生命周期 + 依赖) 战略分析

来源:互联网 发布:天津哪里有mac专柜 编辑:程序博客网 时间:2024/06/05 02:21

什么是Maven?

 Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lif Cycle),一个依赖管理系统(Dependency Management System)和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。 

    通过上面,我们知道Maven是一个项目管理工具,它包含很多内容,随着学习的深入,我们就是要不断地了解它



1.项目对象模型

    POM 全称是 Project Object Model ,即项目对象模型。 pom.xml 是 maven 的项目描述文件。 pom.xml 文件以 xml 的形式描述项目的信息,包括项目名称、版本、项目id 、项目的依赖关系、编译环境、持续集成、项目团队、贡献管理、生成报表等等。


2.约定优于配置

   "约定优于配置", 在 maven 中并不是完全不可以修改的, 他们只是一些配置的默认值而已。 但是使用者除非必要, 并不需要去修改那些约定内容。 maven 默认的文件存放结构如下:
• /项目目录
    o pom.xml 用于 maven 的配置文件
    o /src 源代码目录
        /src/main 工程源代码目录
        /src/main/java 工程 java 源代码目录
        /src/main/resource 工程的资源目录
        /src/test 单元测试目录
        /src/test/java
    o /target 输出目录,所有的输出物都存放在这个目录下
        /target/classes 编译之后的 class 文件


3.项目生命周期

    Maven的生命周期就是对所有的构建过程进行抽象和统一。包含了项目的清理、初始化、编译、测试、打包、集成测试、验证、部署和站点生成等几乎所有的构建步骤。
    Maven的生命周期是抽象的,即生命周期不做任何实际的工作,实际任务由插件完成,类似于设计模式中的模板方法。

    Maven有三套相互独立的生命周期,分别是clean、default和site。每个生命周期包含一些阶段(phase),阶段是有顺序的,后面的阶段依赖于前面的阶段。


4.依赖管理

    这个特性让开发者只需要关注代码的直接依赖,比如我们用了 spring,就加入 spring 依赖说明就可以了,至于 spring 自己还依赖哪些外部的东西,maven 帮我们搞定。

    任意一个外部依赖说明包含如下几个要素:groupId, artifactId, version, scope, type, optional。
    其中前3个是必须的,各自含义如下:
     groupId 必须
     artifactId 必须
     version 必须。
    这里的 version 可以用区间表达式来表示, 比如(2.0,)表示>2.0, [2.0,3.0)表示2.0<=ver<3.0;多个条件之间用逗号分隔,比如[1,3),[5,7]。
    scope 作用域限制
    type 一般在 pom 引用依赖时候出现,其他时候不用
    optional 是否可选依赖

    代码有代码自己的依赖,各个 maven 使用的插件也可以有自己的依赖关系。依赖也可以是可选的。


总结:

    一个事物的定义,刚开始的时候,对该事物理解的不深刻,会不知所云,但是经过了解之后,就会觉得定义才是最核心概括该事物的。理解了定义,也就从战略上认知了该事物。当然具体使用过程中还需要在宏观的指导下深入学习。


2 0
原创粉丝点击