Maven学习笔记:什么是Maven&什么是构建

自动化构建工具——maven

因:开发中存在的问题

  • 一个项目=一个工程===》如果一个模块=一个工程就好了(如果每个工程中存在相同jar包,冗余)
  • 需要的jar包及jar包依赖的相关jar包需要自己下载(困难)并手动导入(冗余)项目===》能自动最好了

果:maven出现了

  • 使得将项目中的模块可作为一个项目独立开发,模块间依赖也不影响
  • 所有jar包放一份在仓库中,工程需要时引用即可,不需要在工程中真正的下载一份存着
  • jar包及jar包依赖的相关jar包可自动下载导入,不需要手动,然后通过gav来引用即可

什么是maven

  • 服务于java平台
  • 自动化构建工具
  • java编写

什么是构建

  • 以‘Java源文件’、‘配置文件’、‘jsp’、‘html’、‘图片’等项目开发需要的”原材料“,去”生产“一个可以运行的项目的过程
  • 编译==》部署 ==》搭建(大致过程)
    tip:运行时环境在web项目打包时并没有包含在内,它们以引用的形式存在于项目的开发环境中,所以不是目录形式存在
    Maven学习笔记:什么是Maven&什么是构建_第1张图片
  • 开发过程中,所有的路径或配置文件中配置的类路径都是以编译结果的目录为标准,而不是web项目目录
    Maven学习笔记:什么是Maven&什么是构建_第2张图片

构建过程中各个环节

  • 清理mvn clean:以前旧编译结果删除
  • 编译mvn compile:java==》class
  • 测试mvn test-compile:自动测试,即自动调用junit,确认所有新加对原来无影响(手动测试可能会有遗漏)
  • 报告:测试结果
  • 打包mvn package:jar/war包
  • (安装mvn install:打包文件复制到maven仓库的指定位置)maven特有
  • 部署:包复制到指定容器目录下,使其可以运行

生成站点mvn site

安装maven核心程序

  1. 安装好java环境
  2. 下载maven压缩包并解压
  3. 配置maven环境变量:MAVEN_HOME(安装路径)、用户环境变量path
  4. 命令行验证安装成功:mvn -v

不建议使用开发工具中maven插件,要使用自己下载安装的,所以要改一些开发工具的设置使得可以使用自己的maven

maven核心概念(约定>配置>编码)

  • 约定目录结构:只有按约定目录存放内容才可以使maven实现自动化(按约定做事或者配置告知),不然它找不到需要的文件
    Maven学习笔记:什么是Maven&什么是构建_第3张图片
  • POM:project object model 项目对象模型(万物皆对象,将项目当成一个对象来处理)
  • 坐标:唯一定位一个工程——gav
    • gropuid:公司组织域名倒序+项目名称(目录)
    • artifact:模块名(文件名part)
    • version:版本(文件名part)
  • 依赖:相当于导入jar包,通过坐标实现导入(自己项目放入仓库不能手动建目录放入,要通过命令mvn install
    • gav[+scope]:scope=compile/test/provided……
    • 依赖具有传递性,你导入我,相当于我所拥有的依赖都是你的,but !!非compile不具有传递性
    • 依赖的排除,我想要你但不想要你的依赖
    • 依赖的原则间接依赖版本等不一致问题,路径最短者优先,即间接次数最少者 ,如若同路径则先声明者优先
    • 版本号统一替换方式:使用properties标签+EL表达式(这种方式还可以应用在统一修改字符集等等的anything,类似Java中常量不直接用常量表示而是定义一个常量名)
 < exclusions>
	< exclusion>
 		gav要排除的依赖
 	< /exclusion>
 < /exclusions>
< properties>
	< 自定义标签名> 版本号< /自定义标签名>
 < /properties>
在需要的version标签中 ${自定义标签名}
compile test provided
对主程序和测试程序都有效 只对测试程序有效 对主程序和测试程序都有效
参与打包 不参与打包 不参与打包
参与部署 不参与部署 不参与部署
  • 仓库:需要的插件、第三方框架工具的jar包、自己开发工程等会在本地仓库中寻找,找不到需要联网到中央仓库中下载到本地仓库

    • 仓库分类
      • 本地仓库
      • 远程仓库:私服(局域网)、中央仓库(服务于所有)、中央仓库镜像(服务于所有,负载均衡)
    • 联网失败可能会造成构建就会失败,因为构建需要的东西下载不下来
    • 修改本地仓库位置:安装目录\conf\setting.xml中修改< localRepository>标签,设置为指定绝对路径
      tip:第一方jdk、第二方us、第三方other
  • 生命周期/插件/目标

    • 构建环节执行顺序即为生命周期,顺序不能打乱
    • maven核心环节定义了抽象生命周期
      • clean lifecycle 清理 =清理千种后三个阶段
      • default lifecycle 主要的
      • site lifecycle 生成站点 =站点前中后部署四个阶段
    • 无论执行哪个生命周期的阶段,其前的所有阶段都会自动执行
    • 各个生命周期都是由相应插件来完成的
  • 继承

    • 对于不具有传递性的依赖,可以使用父工程的方式使得依赖统一且只需导入一次,在子工程中声明父工程gav即可(!!父工程打包方式为pom)
    • 安装要先安装父工程再安装子工程,否则会失败
  • 聚合:通过安装聚合模块实现一键安装各个模块
    Maven学习笔记:什么是Maven&什么是构建_第4张图片

你可能感兴趣的:(Maven学习笔记:什么是Maven&什么是构建)