zoukankan      html  css  js  c++  java
  • Java第四十三天,Maven基础篇(一),走进Maven

    一、概念

    Maven,专家,内核;是一个项目管理工具;它包含了以下内容:

    • 一个项目对象模型 (POM: Project Object Model)
    • 一组标准集合
    • 一个项目生命周期(Project Lifecycle)
    • 一个依赖管理系统(Dependency Management System)
    • 一个用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑

    二、功能

    1.统一管理项目用到的 依赖jar包,防止版本冲突

    Maven 会把所有项目的 依赖 jar 包统一放在一个叫做 jar包仓库 的地方;任何项目需要用到 jar包 时,都需要通过 jar包坐标  引入依赖jar包

    2.将 java文件 自动编译成 二进制字节码文件,减少人工压力

    3.统一管理单元测试,一次性测试需要验证的代码

    4.将项目打包,生成报表,部署项目

    三、Maven 的安装

    1.官网下载安装包

    http://maven.apache.org/download.cgi

    2.解压压缩包到指定目录(无中文、无空格的路径)

    3.配置环境变量

    注意:

    MAVEN_HOME 是新建,Path 是编辑新增子级条目

    • MAVEN_HOME ===> Maven 的解压目录
    • Path ===> %MAVEN_HOME%in

    4.测试是否安装成功

    1.进入 cmd 命令框
    
    2.运行 mvn -v 命令

    5.目录结构

    • bin ===> 可执行文件存放目录;其中的 Mvn.cmd 主要用来构建项目
    • boot ===> Maven 自身运行所需要的类加载器
    • conf ===> 配置文件存放目录,settings.xml 是 Mavn 项目需要用到的配置文件
    • lib ===> Maven 自身运行所依赖的 jar 包

    四、Maven 仓库的种类及其关系

    1.Maven 仓库的位置

    由 apache-maven-3.6.3confsetting.xml 文件指定,如下:

    <!-- localRepository
       | The path to the local repository maven will use to store artifacts.
       |
       | Default: ${user.home}/.m2/repository
      <localRepository>/path/to/local/repo</localRepository>
    -->
    
    
    配置文件指明 Maven 仓库的默认位置为 ${user.home}/.m2/repository;如果需要,可以使用如下标签自定义本地仓库的位置
    <localRepository>本地仓库的位置</localRepository>

    2.仓库的种类

    • 本地仓库 ===> 本机从远程仓库下载的 jar包 形成的jar包仓库
    • 远程仓库(私服) ===> 公司为了自身需求,自己搭建的 Maven 仓库
    • 中央仓库 ===> 需要联网获取;是 Maven 官网提供的所有开源的 jar包 仓库

    3.本地仓库与远程仓库的关系

    (1)概述

    本地的所有项目第一次用到 Jar 包时,都会通过 maven 软件从远程仓库或中央仓库(因为第一次使用本地仓库是肯定没有已经下载好的依赖包的)下载 jar 包并存在本地仓库,本地仓库 就是本地文件夹,当第二次需要此 jar 包时则不再从远程仓库下载,因为本地仓库已经存在了,可以将本地仓库理解为缓存,有了本地仓库就不用每次从远程仓库下载了

    (2)顺序

    在默认请求下,启动一个 Maven 工程,会首先从 本地仓库 找jar依赖包;

    若本地仓库没有,且所在公司有私服,则再次通过私服寻找 jar依赖包,若私服也没有,最后从中央仓库寻找 jar依赖包;

    若本地仓库没有,且所在公司没有私服,则直接从中央仓库寻找 jar 依赖包

    (3)图解

    (4)读者福利

    笔者有一个本地仓库,里面放了一些常用的 jar依赖包,这里就当作礼品送给大家了

    https://download.csdn.net/download/ITlanyue/12727820

    五、Maven标准目录结构

    • src/main/java ===> 核心代码部分
    • src/main/resources ===>配置文件部分
    • src/main/webapp ===> web资源;如页面资源、js、css、图片资源 ......
    • src/test/java ===> 测试代码部分
    • src/test/resources ===> 测试配置文件部分
    • target —— 项目输出位置,编译后的 class 文件会输出到此目录
    • pom.xml——maven 项目核心配置文件

    注意:如果是普通的 java 项目,那么就没有 webapp 目录,只有 web 项目才会有

    六、Maven常用命令

    • mvn clean ===> 清除项目编译产生的数据;删除 target 目录,导入项目时需要用到(每个人电脑的开发环境不一定相同)
    • mvn compile ===> 将项目中 src/main/java 目录下面的Java代码进行编译,生成 target 目录,并且生成相关核心代码的字节码文件
    • mvn test ===> 完成 mvn compile 功能后,又将项目中 src/test/java 目录下面的Java代码进行编译,生成 target 目录,并且生成测试代码的相关字节码文件
    • mvn package ===> 打包;完成 mvn compile 和 mvn test 功能后,根据项目中 pom.xml 配置文件的 <packaging/>标签,将项目打包成相应的格式
    • mvn install ===> 安装;完成 mvn compile 和 mvn test 和 mvn package 功能后,又将打包后的包安装到了本地仓库
    • mvn deploy ===> 发布;需要进行额外的配置后,才可以执行该命令

    七、Maven生命周期

    maven 对项目构建过程分为三套相互独立的生命周期,请注意这里说的是“三套”,而且“相互独立”,这三套生命周期分别是:

    • Clean Lifecycle ===> 清理生命周期;在进行真正的构建之前进行一些清理工作
    • Default Lifecycle ===> 默认生命周期;构建的核心部分,编译,测试,打包,部署等等
    • Site Lifecycle ===> 站点生命周期;生成项目报告,站点,发布站点

    八、Maven概念模型

    1.项目对象模型 (Project Object Model)

    一个 maven 工程都有一个 pom.xml 文件,通过 pom.xml 文件定义项目的坐标、项目依赖、项目信息、项目运行环境信息、插件目标等

    2.依赖管理系统(Dependency Management System)

    通过 maven 的依赖管理对项目所依赖的 jar 包进行统一管理

    <!-- 依赖关系 -->
    <dependencies>
        <dependency>
            <!--项目名称 -->
            <groupId>项目名称</groupId>
            <!--模块名称 -->
            <artifactId>项目中的模块名称</artifactId>
            <!-- 版本 -->
            <version>版本号</version>
            <!-- 依赖范围:单元测试 -->
            <scope>test</scope>
        </dependency
    
        ......
    </dependencies>

    3.一个项目生命周期(Project Lifecycle)

    使用 maven 完成项目的构建,项目构建包括:清理、编译、测试、部署等过程, maven 将这些过程规范为一个生命周期,maven 通过执行一些简单命令即可实现上边生命周期的各各过程,比如执行 mvn compile 执行编译、执行 mvn clean 执行清理......

    生命周期的各阶段:

    4.一组标准集合

    maven 将整个项目管理过程定义一组标准,比如:通过 maven 构建工程有标准的目录结构,有标准的生命周期阶段、依赖管理有标准的坐标定义等

    5.插件(plugin)目标(goal)

    maven 管理项目生命周期过程都是基于插件完成的;每一次构建项目,Maven 底层都会有一个插件在工作,每一个构建项目的命令都对应着 Maven 底层的一个插件


     

  • 相关阅读:
    GIL锁、进程池和线程池、同步和异步
    线程
    socket编程
    单例模式
    反射、自定义内置方法来定制类的功能、元类
    elasticSearch(一)--数据1
    docker学习整理(三)
    docker学习整理(二)
    docker学习整理(一)
    IDEA 配置mybatis生成代码
  • 原文地址:https://www.cnblogs.com/viplanyue/p/13573671.html
Copyright © 2011-2022 走看看