Maven简介
MavenMaven是一套软件工程管理和整合工具。基于工程对象模型的概念,通过一个中央信息管理模块,maven能够管理项目的构建,报告和文档。Maven工程结构和内容被定义在一个XML文件中,-pom.xml,是project object model (POM),pom文件是Maven系统的基础组件。Maven会创建默认的工程结构,开发者只需要合理放置文件,pom.xml文件中不需要
Maven
Maven是一套软件工程管理和整合工具。基于工程对象模型的概念,通过一个中央信息管理模块,maven能够管理项目的构建,报告和文档。
Maven工程结构和内容被定义在一个XML文件中,-pom.xml,是project object model (POM),pom文件是Maven系统的基础组件。
Maven会创建默认的工程结构,开发者只需要合理放置文件,pom.xml文件中不需要手动编写。Maven能够帮助完成开发者的工作:
构建
文档生成
报告
依赖
SCMs
发布
分发
邮件列表
Maven简化了工程的构建过程,并对其标准化。Maven的目标:
为开发者提供:一个可复用,可维护,更易理解的工程综合模型
与这个模型交互的插件或者工具。
Maven - POM
POM 代表工程对象模型。它是使用 Maven 工作时的基本组建,是一个 xml 文件。它被放在工程根目录下,文件命名为 pom.xml。
POM 包含了关于工程和各种配置细节的信息,Maven 使用这些信息构建工程。POM 也包含了目标和插件。当执行一个任务或者目标时,Maven 会查找当前目录下的 POM,从其中读取所需要的配置信息,然后执行目标。能够在 POM 中设置的一些配置如下:
在POM中,groupId(代表制造该工件的实体或组织)、artifactId(实际的工件的名称)、packaging、version(该工件的版本号)叫做maven坐标,它能唯一的确定一个项目。有了maven坐标,我们就可以用它来指定我们的项目所依赖的其他项目、插件、或者父项目- project dependencies
- plugins
- goals
- build profiles
- project version
- developers
- mailing list
在创建 POM 之前,我们首先确定工程组(groupId),及其名称(artifactId)和版本,在仓库中这些属性是工程的唯一标识。
需要说明的是每个工程应该只有一个 POM 文件。
- 所有的 POM 文件需要 project 元素和三个必须的字段:groupId, artifactId,version。
- 在仓库中的工程标识为 groupId:artifactId:version
- POM.xml 的根元素是 project,它有三个主要的子节点:
Super POM
所有的 POM 都继承自一个父 POM(无论是否显式定义了这个父 POM)。父 POM 也被称作 Super POM,它包含了一些可以被继承的默认设置。
Maven 使用 effective pom(Super pom 加上工程自己的配置)来执行相关的目标,它帮助开发者在 pom.xml 中做尽可能少的配置,当然这些配置可以被方便的重写。
查看 Super POM 默认配置的一个简单方法是执行以下命令:mvn help:effective-pom
在你的电脑上的任意目录下创建一个 pom.xml 文件,使用上面提到的示例 pom 中的内容。
在下面的例子中,我们在 C:\MVN\project 目录中创建了一个 pom.xml 文件。
现在打开命令控制台,到 pom.xml 所在的目录下执行以下 mvn 命令。
C:\MVN\project>mvn help:effective-pom
在 pom.xml 中,你可以看到 Maven 在执行目标时需要用到的默认工程源码目录结构、输出目录、需要的插件、仓库和报表目录。
Maven 的 pom.xml 文件也不需要手工编写。
Maven 提供了大量的原型插件来创建工程,包括工程结构和 pom.xml。
Maven插件
插件定义了常用的构建逻辑,能够被重复利用。这样做的好处是,一旦插件有了更新,那么所有maven用户都能得到更新。
Maven生命周期
插件目标可以绑定到生命周期阶段上,一个生命周期可以绑定多个插件目标。当maven在构建过程中逐步的通过每个阶段时,会执行该阶段所有的插件目标。目前生命周期阶段有clean、vavidate、compiler、test、package、verify、install、site、deploy阶段。
Maven依赖管理
之所以能实现依赖传递性关键就在于下载spring-webmvc库,同时也下载了pom文件,在pom文件定义了这个库需要的依赖关系
更多推荐
所有评论(0)