maven 原理理解

百度百科:

1 Maven 是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),
一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency
Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)
的逻辑。当你使用 Maven 的时候,你用一个明确定义的项目对象模型来描述你的项目,然
后 Maven 可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。

2 Maven 包含一个生命周期,当你运行 mvn install 的时候被调用。这条命令告诉
Maven 执行一系列的有序的步骤,直到到达你指定的生命周期。遍历生命周期旅途中的一
个影响就是,Maven 运行了许多默认的插件目标,这些目标完成了像编译和创建一个 JAR
文件这样的工作。 此外,Maven 能够很方便的帮你管理项目报告,生成站点,管理 JAR 文件,等等。

Maven 项目中主要应用

  • 项目构建(生成源码(如果项目使用自动生成源码) / 从源码生成项目文档 / 编译源码 /将编译后的代码打包成 JAR 文件或者 ZIP 文件 /将打包好的代码安装到服务器、仓库或者其它的地方)自动构建工具通常要比手动执行同样的构建过程要快
  • 文档管理
  • 生成测试报告
  • 解决项目间依赖项
  • 源代码版本管理及自动关联
  • 项目 Releases
  • 项目的分发
  • 强制性精确的 jar 包管理
  • jar 包自动下载
  • 辅助测试

pom.xml 顶级元素理解

  • Project: Project 被定义为 POM(Project Object Model);一个 Project 可以依
    赖其他的 project,一个 project 也可以有多个子 project 组成

  • modelVersion:所使用的 object model 版本,为了确保稳定的使用,这个元素是强制性的。除非 maven开发者升级模板,否则不需要修改

  • groupId :是项目创建团体或项目的唯一标志符,通常是域名倒写

  • artifactId:是项目 artifact 唯一的基地址名,通常指的是项目名或者模块名

  • version : artifact 的版本,通常能看见为类似 0.0.1-SNAPSHOT,其中 SNAPSHOT 表示项目开发中,为开发版本

  • packaging : artifact 打包的方式,如 jar、war、ear 等等。默认为 jar。这个不仅表示项目最终产生何种后缀的文件,也表示 build 过程使用什么样的 lifecycle

  • name : 表示项目的展现名,在 maven 生成的文档中使用

  • url : 表示项目的地址,在 maven 生成的文档中使用,通常不用

    扫描二维码关注公众号,回复: 5615001 查看本文章
  • description : 表示项目的描述,在 maven 生成的文档中使用

  • dependencies : 表示依赖,在子节点 dependencies 中添加具体依赖的 groupId、artifactId 和 version ;
    Maven 在搭建工程时主要是编写依赖。编写依赖就是从官网上复制

  • build : 表示 build 配置

  • parent : 表示父 POM

  • Repositories----仓库 :对于需要的依赖,在 pom.xml 中添加 dependency 即可,可以在 maven 的仓库中搜索

在这里插入图片描述
常用命令

mvn compile
编译源代码
mvn test
运行测试程序
mvn clean
清除目标目录中的生成结果
mvn package
依据项目生成 jar \war 文件
mvn install
在本地 Repository 中安装 jar
mvn clean install
删除再编译

mvn archetype:genate
生成 maven 项目结构

pom.xml 依赖:
Maven 中是通过在 pom.xml 中添加依赖从而来引入 jar 包的。其原理是:每一个 jar 都会有独立的坐标,Maven 就是通过坐标来定位到具体的 jar 的。Maven 定义了这样一组规则:世界上任何一个构件都可以使用 Maven 坐标唯一标识

Maven 坐标组成

  • groupId: 定义当前 Maven 项目隶属的实际项目
  • artifactId: 该元素定义实际项目中的一个 Maven 项目或模块
  • version: 该元素定义 Maven 项目当前所处的版本
  • packaging: 该元素定义 Maven 项目的打包方式
  • classifier: 该元素用来帮助定义构建输出的一些附属构件

注:groupId、artifactId、version、packaging 是必须定义的,classifier 是不能被直接

定义的,因为附属构件不是项目直接默认生成的,而是由附加的插件帮助生成的

依賴配置詳解:
在这里插入图片描述

依赖作用域(范围)
在这里插入图片描述

  1. 传递性依赖
    在这里插入图片描述

  2. 获取依赖
    举个例子,假如现在需要添加 Spring 的依赖,但具体哪个版本呢,可以先不用管,直接去

Baidu 或者 Google,以“ maven servlet repository ”为关键字搜索,往往第一个链

接中,就是你需要的方案。

( 1.) 地址

  http://mvnrepository.com/

(2). 资源搜索
在这里插入图片描述
3. 复制依赖
从网页中的 maven 选项卡中复制依赖信息到自己的 pom.xml 中
在这里插入图片描述

标准的 maven 目录结构

在这里插入图片描述

瞎看 01 Eclipse 转 maven
在这里插入图片描述
表格对应关系将文件复制到 eclipse 工程中 / 将 maven 工程打包,里面的 lib 复制到 eclipse 工程中

猜你喜欢

转载自blog.csdn.net/rdz_NNN/article/details/88727150
今日推荐