乐趣区

关于maven:自动化构建工具Maven

一、目前框架须要的技术

二、目前的技术在开发的过程中存在的问题

2.1 一个我的项目就是一个工程

  • 如果我的项目十分宏大,不适宜持续应用 package 来划分模块,最好是每个模块对应一个工程,利于分工协作。
  • 借助于 Maven 能够实现一个我的项目拆分成多个工程

2.2 我的项目中须要的 jar 包必须手动复制、粘贴、到 WEB-INF/lib 目录下

  • 带来的问题是:同样的 jar 包文件反复呈现在不同的我的项目工程中,一方面节约存储空间,另外也让工程比拟臃肿
  • 借助 Maven,能够将 jar 包仅仅放弃在“仓库”中,有须要应用的工程援用这个文件接口,并须要真的把 jar 包复制过去。

2.3 jar 包须要他人为咱们筹备好,或者官网下载

  • 不同技术的官网提供的 jar 包下载模式是形形色色。
  • 有些技术的官网就是通过 Maven 或者 SVN 等工具进行下载的。

2.4 一个 jar 包依赖的其余 jar 包须要本人手动退出到我的项目中

  • FileUpload 文件上传 ->IO 组件,commons-fileupload-1.3.jar 依赖于 commons-io-2.0.1.jar。
  • 所有 jar 之间的依赖关系,程序员自我理解,减少学习老本。
  • Maven 会主动将依赖的 jar 包导入进来。

三、Maven 是什么

Maven 是一款服务于 Java 平台的自动化构建工具

  • Make->ant->Maven->Gradle

3.1 Maven 的构建

  1. 编译过程

    • Java 源文件 (.java)-> 编译 -> 字节码文件 (.class)-> 交给 JVM 执行
  2. 部署

    • 一个 BS 我的项目最终运行并不是动静 WEB 自身,而是这个动静 Web 工程“编译的后果”
    • 动静 Web 工程 -> 编译、部署 -> 编译后果

  1. 搭建

3.2 构建过程中的各个环节

  1. 清理 :将以前编译失去的旧的 class 字节码文件删除,为下一次编译做筹备
  2. 编译 :将 Java 源程序编程 class 字节码文件
  3. 测试 :自动测试,调用 junit 程序
  4. 报告 :测试程序执行的后果
  5. 打包 :动静 web 工程打成 war 包,Java 工程打 jar 包
  6. 装置 :Maven 特定的概念 – 将打包失去的文件复制到仓库中的指定地位
  7. 部署 :将动静 web 工程生产的 war 包复制到 Servlet 容器的指定目录下,使其能够运行。

3.3 装置 Maven 外围程序

  • 查看 JAVA_HOME 环境变量
  • 解压 Maven 外围程序
  • 配置环境变量
  • 验证

3.4 Maven 的外围概念

  • 约定的目录构造
  • POM

    • pom.xml 是 Maven 工程的外围配置文件
  • 坐标

    • 由三个要害来确定,groupId、artifactId、version
    • 别离是公司或组织名 + 我的项目名、模块名、版本号
    • 其中坐标和仓库门路:groupId/artifactId/version/artifactId+version.jar
  • 依赖

    • Maven 解析依赖时会到本地仓库中进行查找依赖的包

      • 对于咱们本人开发的包,须要应用 mvn install 命令装置后能够进入仓库
    • 依赖的范畴

      • 1 compile

        • 对主程序是否无效 – 无效
        • 对测试程序是否无效 – 无效
        • 是否参加打包 – 参加
   ![compile](https://cdn.jsdelivr.net/gh/hshdexy/blogImages/imgs/compile.png)
  • 2 test

    • 对主程序是否无效 – 有效
    • 对测试程序是否无效 – 无效
    • 是否参加打包 – 不参加
    • 典型例子:junit
  • 3 provided

    • 对主程序是否无效 – 无效
    • 对测试程序是否无效 – 无效
    • 是否参加打包 – 不参加,不参加部署
    • 典型例子:servlet-api.jar
 ![prrvided 图](https://cdn.jsdelivr.net/gh/hshdexy/blogImages/imgs/prrvided%E5%9B%BE.png)
  • 仓库

    • 仓库的分类

      • 本地仓库:以后电脑中部署的仓库
      • 近程仓库

        • 私服:搭建在局域网中,为局域网中所有 Maven 工程服务
        • 地方仓库:架设在 Internet 上,为全世界的 Maven 工程提供服务
        • 地方仓库镜像:架设在各个大洲的,为地方仓库分担流量的,加重地方仓库的压力,更快响应用户的申请。
    • 仓库中保留的内容:仓库中保留的都是 Maven 工程

      • Maven 本身所须要的插件
      • 第三方框架或工具的 jar 包
      • 咱们本人开发的 Maven 工程
  • 生命周期 / 插件 / 指标
  • 继承
  • 聚合

四、Maven 工程

4.1 约定的目录构造

  • 1 根目录:工程名
  • 2 src 目录:源码
  • 3 pom.xml 文件:Maven 工程的外围配置文件
  • 4 main 目录:寄存主程序
  • 5 test 目录:寄存测试程序
  • 6 Java 目录:Java 源文件
  • 7 resources 目录:寄存框架或其余工具的配置文件

4.2、为什么要恪守约定的目录构造

  • Maven 负责我的项目的主动构建
  • 约定 > 配置 > 编码

五、罕用 Maven 命令

5.1 留神:执行与构建过程相干的 Maven 命令,必须进入 pom.xml 所在的目录

  • 与构建过程相干:编译、测试、打包 ……

5.2 罕用的命令

  • mvn clean:清理
  • mvn compile:编译主程序
  • mvn test-compile:编译测试程序
  • mvn test:执行测试
  • mvn package:打包
  • mvn install:安装包至仓库
  • mvn site:生产站点

六、对于 Maven 联网的问题

  • 1 Maven 的外围程序中仅仅定义了形象的生命周期,但具体的工作必须由特定的插件来实现,而插件自身并不蕴含在 Maven 的外围程序中
  • 2 当我的 Maven 命令须要某些插件时,Maven 外围程序会首先到本地仓库中查找
  • 3 本地仓库的默认地位:C:UsersLJLRY.m2repository
  • 4 Maven 外围程序如果在本地仓库中找不到须要的插件,那么会主动的到地方仓库进行下载
  • 5 如果此时无奈连贯外网,则构建失败
  • 6 批改本地默认的仓库地位
退出移动版