• 2022-09-16 第五组 张明敏 学习笔记


    目录​​​​​​​

    一、Maven简介

    1、Maven是什么

    2、Maven的作用

    3、Maven仓库

    4、POM 坐标

    5、Maven生命周期

    Clean 生命周期

    Default (Build) 生命周期

    Site 生命周期

    常用的命令


    一、Maven简介

    1、Maven是什么

             Maven是基于项目对象模型(POM project object model),可以通过一小段描述信息(配置)来管理项目的构建,报告和文档的软件项目管理工具。
    Maven的本质是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型(POM)。
    POM (Project ObjectModel) :项目对象模型。


    2、Maven的作用

           项目构建:提供标准的、跨平台的自动化项目构建方式。
    依赖管理:方便快捷的管理项目依赖的资源(jar包) , 避免资源间的版本冲突问题。不用自己手动去下载jar ,pom文件会自动管理下载好的jar包。
    统一开发结构:提供标准的、统一的项目结构。
    用来解决导入java类依赖的jar,编译java项目主要问题。
     

    3、Maven仓库

    仓库分为:

    • 中央(central)

    • 远程(remote)

    • 本地(local)

    中央仓库是中心节点,有Maven社区提供,但是各国或各公司网络访问中心仓库速度可能很慢,所以可以自己搭建远程仓库,相当于中央仓库的一个缓存点,加快网络访问速度,还有一个问题,每次都下载jar是非常浪费带宽和时间的,所以在开发者本机也有一个本地仓库,用来缓存jar。

    仓库本质就是一个文件夹,用来存放依赖jar等文件。

    本地仓库目录默认存放在用户目录下.m2文件下

    • .m2/respository/ 为仓库存放目录

    • .m2/settings.xml 为Maven的设置文件

    本地仓库路径修改需要修改setting.xml

    <localRepository>C:/MyLocalRepositorylocalRepository>
    

    远程仓库修改需要修改项目中的pom.xml文件

    1.  <repositories>
    2.       <repository>
    3.          <id>companyname.lib1id>
    4.          <url>http://download.companyname.org/maven2/lib1url>
    5.       repository>
    6.       <repository>
    7.          <id>companyname.lib2id>
    8.          <url>http://download.companyname.org/maven2/lib2url>
    9.       repository>
    10.    repositories>
    • 中央仓库地址:https://mvnrepository.com/

    可以web打开搜索依赖。

    Maven依赖的搜索顺序:

    • 本地仓库搜索,搜索到即使用,搜索不到就去中央仓库搜索

    • 中央仓库搜索到则下载缓存到本地仓库,搜索不到则查找配置的远程仓库

    • 如果没配置远程仓库,则报错,配置了远程仓库,则去远程仓库查找

    • 远程仓库搜索到则下载到本地缓存,搜索不到则报错

    4、POM 坐标

    1. <project>
    2.     
    3.     <modelVersion>4.0.0modelVersion>
    4.     
    5.     <groupId>com.companyname.project-groupgroupId>
    6.     
    7.     <artifactId>projectartifactId>
    8.     
    9.     <version>1.0version>
    10. project>

    5、Maven生命周期

    • 验证 validate 验证项目 验证项目是否正确且所有必须信息是可用的

    • 编译 compile 执行编译 源代码编译在此阶段完成

    • 测试 Test 测试 使用适当的单元测试框架(例如JUnit)运行测试。

    • 包装 package 打包 创建JAR/WAR包如在 pom.xml 中定义提及的包

    • 检查 verify 检查 对集成测试的结果进行检查,以保证质量达标

    • 安装 install 安装 安装打包的项目到本地仓库,以供其他项目使用

    • 部署 deploy 部署 拷贝最终的工程包到远程仓库中,以共享给其他开发人员和工程

    Maven 有以下三个标准的生命周期:

    • clean:项目清理的处理

    • default(或build) :项目部署的处理

    • site:项目站点文档创建的处理

    Clean 生命周期

    当我们执行 mvn post-clean 命令时,Maven 调用 clean 生命周期,它包含以下阶段:

    • pre-clean:执行一些需要在clean之前完成的工作

    • clean:移除所有上一次构建生成的文件

    • post-clean:执行一些需要在clean之后立刻完成的工作

    Default (Build) 生命周期

    这是 Maven 的主要生命周期,被用于构建应用,包括下面的 23 个阶段:

    • validate(校验) 校验项目是否正确并且所有必要的信息可以完成项目的构建过程。

    • initialize(初始化) 初始化构建状态,比如设置属性值。

    • generate-sources(生成源代码) 生成包含在编译阶段中的任何源代码。

    • process-sources(处理源代码) 处理源代码,比如说,过滤任意值。

    • generate-resources(生成资源文件) 生成将会包含在项目包中的资源文件。

    • process-resources (处理资源文件) 复制和处理资源到目标目录,为打包阶段最好准备。

    • compile(编译) 编译项目的源代码。

    • process-classes(处理类文件) 处理编译生成的文件,比如说对Java class文件做字节码改善优化。

    • generate-test-sources(生成测试源代码) 生成包含在编译阶段中的任何测试源代码。

    • process-test-sources(处理测试源代码) 处理测试源代码,比如说,过滤任意值。

    • generate-test-resources(生成测试资源文件) 为测试创建资源文件。

    • process-test-resources(处理测试资源文件) 复制和处理测试资源到目标目录。

    • test-compile(编译测试源码) 编译测试源代码到测试目标目录.

    • process-test-classes(处理测试类文件) 处理测试源码编译生成的文件。

    • test(测试) 使用合适的单元测试框架运行测试(Juint是其中之一)。

    • prepare-package(准备打包) 在实际打包之前,执行任何的必要的操作为打包做准备。

    • package(打包) 将编译后的代码打包成可分发格式的文件,比如JAR、WAR或者EAR文件。

    • pre-integration-test(集成测试前) 在执行集成测试前进行必要的动作。比如说,搭建需要的环境。

    • integration-test(集成测试) 处理和部署项目到可以运行集成测试环境中。

    • post-integration-test(集成测试后) 在执行集成测试完成后进行必要的动作。比如说,清理集成测试环境。

    • verify (验证) 运行任意的检查来验证项目包有效且达到质量标准。

    • install(安装) 安装项目包到本地仓库,这样项目包可以用作其他本地项目的依赖。

    • deploy(部署) 将最终的项目包复制到远程仓库中与其他开发者和项目共享。

    Site 生命周期

    Maven Site 插件一般用来创建新的报告文档、部署站点等。

    • pre-site:执行一些需要在生成站点文档之前完成的工作

    • site:生成项目的站点文档

    • post-site:执行一些需要在生成站点文档之后完成的工作,并且为部署做准备

    • site-deploy:将生成的站点文档部署到特定的服务器上

    Maven的所有生命周期都是由插件完成的,你也可以自定义自己的插件,用来实现特定的功能。

    常用的命令

    1. # 清理
    2. mvn clean 
    3. # 编译
    4. >mvn compile
    5. # 安装
    6. mvn install
    7. # 先清理再部署
    8. mvn clean deploy
    9. # 生成站点文档
    10. mvn site

    1、Maven:项目构建工具,主流 整个项目架构,source,resource,test,testresource 依赖:导入的jar包。 对项目进行打包。

    apache基金会

    2、作为一个java程序员,有必要连接一下apache的官网命名规则。 项目.apache.org。

    配置环境变量: 和JAVA,JDK基本一样。

    新建MAVEN_H0ME:maven的安装路径

    编辑PATH:新建一个%MAVEN_HOME%\bin 通过CMD:mvn -v测试配置是否成功

    这个环境变量,说实话,用处不是很大,不配也没什么大问题!

    3、Maven解压后: conf目录,配置目录,在这个目录下有一个settings.xml,Maven的核心配置文件。

    maven会自动给我们下载jar包! 在我们的JavaWEB阶段,所有的jar包都是我们下载好复制粘贴到我们的项目里。我们在使用框架开发的过程中,会导入非常多的jar包,jar包要统一管理,“版本”,这些jar包是怎么下载的,从哪下载的?

    4、Mysql驱动从哪里下载?

    我给你们的所有的jar包,同时我通过maven下载下来的! 最终我们的项目是要打包放到服务器上的! 这些jar包也得跟着一起放上去。 加入说我们的项目需要100个jar包,都复制粘贴到项目里。1M,100M。

    我们现在要做的是把这些jar包放在本地,不往项目里导,通过某种方式连接到这些jar包。

    通过一个配置文件,找到这些jar包,最终我们往服务器上部署项目的时候,只需要部署我们的源码,和这个配置文件。

    5、这些jar包我要让他们保存在哪? 仓库是干什么的?存东西的!

    E:/repository 我们通过maven下载的依赖都放在这个位置。需要手动创建这个目录。不要用中文

    maven可以联网下载依赖,去哪个网下载? 默认情况下是去maven的中央仓库!在美丽国! 除非你的电脑做了特殊配置,否则基本上下不下来。 可以做一个镜像,阿里云maven镜像仓库,需要配置阿里云镜像仓库

    实际上,各大编程工具已经内置了maven,当我们第一次创建maven工程时,会联网自动下载一些Maven本身需要的依赖。

    5、src main---源码 java---源码.java resources---资源文件 test---测试源码 java---测试源码.java resources---测试资源文件 pom.xml就是我们上面说的那个配置文件,来管理依赖的。

    6、maven生命周期

    target目录:存放编译后的java文件 默认(default)真正进行项目编译打包等工作阶段

            1、validate:验证项目是否正确

            2、compile:编译,编译项目的源代码*

            3、test:测试,junit这些测试不应该要求代码被打包或部署

            4、package:进行打包。* java工程-------.jar javaweb工程----.war

            5、verify:验证,对集成测试结果执行检查

            6、install:安装* 所有的项目都可以编程jar包(依赖)

            7、deploy:部署,将最终的包赋值到远程存储库,和其他开发人 员共享(maven私服) 清理(clean)执行必要的清理工作。删除target文件夹 站点(site)生成项目报告,站点,发布站点(基本不用)

    7、Maven坐标:

    GroupId:团体组织标识符,它一般情况下以创建这个组织的名称的逆向域名开头。 ArtifactId:项目名。单独项目的唯一标识符。

    Version:版本 通过这三个向量来定位Maven仓库中其jar包所在的位置,把对应的jar包引入到工程中。

    8、依赖范围: compile:默认。

    编译范围,编译,测试,运行都有效。参与打包,安装。

    test:测试范围,只有在test范围下才能用,不参与打包,安装。

    provided:编译和测试,不参与打包,安装。

    runtime:运行,只参与运行。 system:废弃。系统。

    import:废弃。引入。

    9、依赖的传递:(常识性问题) 假如demo01中引入了mysql,servlet,fastjson,codec依赖,我把demo01install到了我的本地仓库,或者是maven私服,如果其他成员通过GAV引入了我的demo01,demo01中的mysql,servlet,fastjson,codec会不会一起引入进来??? 会!!!!!

    10、Gradle:安卓领域,据说未来会取代maven Ant:淘汰

  • 相关阅读:
    zookeeper学习、配置文件参数详解
    fabric.js介绍
    微信小程序商城迅速流行的决定因素
    istio系列:第四章-Ingress网关配置
    热修复Class流派和Dex流派实现原理
    【VsCode】整理代码
    解密Spring Cloud LoadBalancer:实现高效负载均衡的魔法密卷(一)
    【深度学习】神经网络中 Batch 和 Epoch 之间的区别是什么?我们该如何理解?
    从0-1全系列Vue教程带你启航!
    链动2+1模式简单,奖励结构丰厚,自主裂变?
  • 原文地址:https://blog.csdn.net/qq_50392643/article/details/126898771