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 使用的插件也可以有自己的依赖关系。依赖也可以是可选的。
总结:
一个事物的定义,刚开始的时候,对该事物理解的不深刻,会不知所云,但是经过了解之后,就会觉得定义才是最核心概括该事物的。理解了定义,也就从战略上认知了该事物。当然具体使用过程中还需要在宏观的指导下深入学习。
- Maven (POM+约定+生命周期 + 依赖) 战略分析
- maven依赖pom.xml
- maven 父子项目 聚合与继承 生命周期 打包插件 依赖打包 jar pom war
- maven 父子项目 聚合与继承 生命周期 打包插件 依赖打包 jar pom war
- Maven - 依赖与生命周期
- maven生命周期及依赖
- maven中pom.xml获取依赖包
- 比较全的pom.xml maven依赖
- idea解决maven pom依赖下载失败
- 【maven】ITOO POM文件依赖关系
- ssh整合 maven pom.xml依赖
- 相关 maven 依赖(pom.xml 文件)
- maven pom.xml 依赖问题, mrunit
- [Maven]2, pom文件以及三个生命周期
- maven生命周期及pom.xml解析
- maven依赖管理和生命周期
- maven特点&生命周期&依赖范围
- Maven项目开发____Maven依赖大全(Maven Spring依赖,Struts依赖,Hibernate依赖,等依赖pom)
- 十五周项目1
- nginx1.81 使用技巧
- javascript----概念
- JavaAPI之AnnotatedElement接口
- 笔记十:复制构造函数、深拷贝、浅拷贝
- Maven (POM+约定+生命周期 + 依赖) 战略分析
- c++实验7-函数
- Android 个人博客客户端——My CSDN 的实现(5)
- 二叉树的非递归建立(一)
- 一周乱弹(1,eclipse 远程调试tomcat。2,常量类的作用。3,通过花生壳实现远程连接 端口:3389),4oracle查询日期5,bootstrap文本样式6,6 js四舍五入
- poj 3669 bfs+预处理
- Android 6.0运行时权限
- LocalNote,让你像使用本地文件一样使用印象笔记(支持 markdown 格式)
- Ubuntu虚拟机设置固定IP上网(配置IP、网关、DNS、防止resolv.conf被重写)