Maven

关于Maven 的个人总结

一.Maven?

1.1 Maven概念
Maven是一个软件(特别是Java软件)项目管理及自动构建工具,由Apache软件基金会所提供 。基于项目 对象模型概念,Maven利用一个中央信息片段能管理一个项目的构建,报告和文档等步骤。专注服务于Java平台的项目构建和jar包依赖管理。maven并不是一个框架,但是他其中一个功能是帮助开发者管理框架所需要的jar包使用Maven后每个jar包本身只在本地仓库中保存一份,需要jar包的工程只需要以坐标的方式简单的引用一下就可以了。不仅极大的节约了存储空间,让项目更轻巧,更避免了重复文件太多而造成的混乱。

1.2 为什么要用Maven

Maven 是一个项目管理和整合工具。Maven 为开发者提供了一套完整的构建生命周期框架。开发团队几乎不用花多少时间就能够自动完成工程的基础构建配置,因为 Maven 使用了一个标准的目录结构和一个默认的构建生命周期。

最主要***优势***可以总结一下三点:
生命周期管理,便捷的构建过程;
依赖管理,方便引入所需依赖 Jar 包;
仓库管理,提供统一管理所有 Jar 包的工具;
目录结构管理,提供了一套标准的目录结构(基本上所有的web项目,目录结构几乎都是相同的)
当然还有其他的优点:
插件式架构,大量的可重用插件;
很方便集成IDE;
开源项目都使用Maven

***1.3***Maven 安装

首先要安装好Java环境,然后需要下载Maven的二进制包
Maven下载地址:(http://maven.apache.org/download.cgi) 选中apache-maven-3.6.1-bin.zip,解压
配置环境变量在这里插入图片描述
也可以在path中加入maven的bin目录
%MAVEN_HOME%\bin;
或者直接D:\apache-maven-3.6.1\bin总之能找到bin就行

验证maven是否安装成功
在cmd(命令提示符)输入mvn -v 出现如下图所示即安装成功
在这里插入图片描述

二.Maven生命周期

  • maven对构建(build)的过程进行了抽象和定义,这个过程被称为构建的生命周期(lifestyle)
  • 生命周期由多个阶段(phase)组成每个阶段会挂接一到多个goal
  • goad是maven里定义任务的最小单元,相当于ant里的target
  • 可以理解maven为一个插件的容器,每个插件绑定到某个goal执行
    在这里插入图片描述

三.Maven基础知识

-1.maven坐标
:组织名,一般是网址的反写+项目名
:项目名
: 版本号
: 打包方式
   - 2.maven常用构建命令
      compile  编译
      test   测试
      package   打包
      clean  删除target目录
      install  安装jar到本地仓库中
   - 3.
   引入构建包的流程如下,假设本地两个maven工程A和B,其中A依赖B:

进入B工程的目录,进行mvn install。效果是将B工程编包并发布到本地仓库在项目A的pom文件中,添加对B的依赖,进入A工程目录,进行mvn compile编译即可。
  • 4.maven中的坐标和仓库
    在maven中,groupId,artifactId和version一起形成坐标的概念。坐标能够唯一确定jar或者pom。
    maven 的仓库分为本地仓库和远程仓库。
    在setting文件中,可以设置镜像仓库,提高下载速度:
    groups
    *http://maven.net.cn/content/groups/public/
    可以更改本地仓库的存放目录:
    D:/maven/lib/
  • 5.maven依赖范围标签
    scope标签指定的依赖范围,有3种作用域,分别是编译、测试和运行时期。
    scope标签的值,有6种类型,分别是:
    compile:默认值,编译测试和运行都有效
    provided:编译和测试的时候有效,运行时候不生效
    runtime:测试和运行时候有效
    test:只在测试的时候有效
    system:在编译和测试的时候有效,与本机系统关联,可移植性较差
    import:导入的范围,使用在dependencyManagement标签中,表示从其他的pom中导入dependency的配置
    -6. maven依赖传递
    maven中的依赖具有传递性。如果项目A依赖项目B,项目B依赖项目C,那么项目A也是依赖项目C的。这一点可以在项目的依赖列表中看到。
    maven中可以使用标签进行依赖排除。如下图所示,在pom中依赖了hongxing-nage,但是却排除了hongxing-nage所依赖的hongxing-bge。
    -7.maven依赖冲突
    所谓的依赖冲突,举例说明,工程A依赖B和C,但是B和C分别依赖不同版本的D。那么对于工程A来说,到底是依赖了哪个版本的D呢?
    解决依赖冲突有2个基本的原则:
    短路优先原则。 比如存在如下的两个依赖路径,那么A最终会依赖version2的X版本。
    A-B-C-X(version1)
    A-D-X(version2)
    如果路径长度相同,那么先声明先解析。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值