Manve

news/2024/11/15 4:00:23/

Manve

1.WHY?

​ Maven 并不是直接用来辅助编码的,它战斗的岗位并不是以上各层。所以我们有必要通过企业开发中的实际需求来看一看哪些方面是我们现有技术的不足。

2.WHAT?

2.1Maven 简介

Maven 是 Apache 软件基金会组织维护的一款自动化构建工具,专注服务于 Java 平台的项目构建

依赖管理。Maven 这个单词的本意是:专家,内行

2.2.什么是构建

​ 构建就是以我们编写的Java代码、框架配置文件、国际化等其他资源文件、Jsp页面和图片等静态资源作为“原材料”,去“生产”出一个可以运行的项目的过程。

2.3.构建过程中的各个环节

  1. 清理:删除以前的编译结果,为重新编译做好准备2
  2. 编译:将 Java 源程序编译为字节码文件。
  3. 测试:针对项目中的关键点进行测试,确保项目在迭代开发过程中关键点的正确性。
  4. 报告:在每一次测试后以标准的格式记录和展示测试结果。
  5. 打包:将一个包含诸多文件的工程封装为一个压缩文件用于安装或部署。Java 工程对应 jar 包,Web工程对应 war 包。
  6. 安装:在 Maven 环境下特指将打包的结果——jar 包或 war 包安装到本地仓库中。
  7. 部署:将打包的结果部署到远程仓库或将 war 包部署到服务器上运行。

2.4.自动化构建

​ Maven可以自动的从构建过程的起点一直执行到终点;

2.5 Maven 核心概念

Maven 能够实现自动化构建是和它的内部原理分不开的,这里我们从 Maven 的九个核心概念入手,

看看 Maven 是如何实现自动化构建的

  1. POM
  2. 约定的目录结构
  3. 坐标
  4. 依赖管理
  5. 仓库管理
  6. 生命周期/插件/目标
  7. 插件和目标
  8. 继承
  9. 聚合

3.安装maven核心程序

1.检查JAVA_HOME环境变量

C:\Users\ZHH>echo %JAVA_HOME%
E:\java\jdk

2.将Maven放在一个非中文无空格路径下

E:\java\maven\apache-maven-3.2.2

3.配置Maven相关的环境变量

  • MAVEN_HOME或M2_HOME

    E:\java\maven\apache-maven-3.2.2
    
  • path

    %M2_HOME%\bin
    

4.验证:运行mvn -v命令查看Maven版本

4.创建第一个Maven工程

4.1.创建约定的目录结构

  1. 根目录:工程名
  2. src目录:源码
  3. pom.xml:Maven工程的核心配置文件
  4. main目录:存放主程序
  5. test目录:存放测试程序
  6. java目录:存放java源文件
  7. resources目录:存放框架或其他工具的配置文件

4.2.为什么要遵守约定的目录结构呢?

是为了让Maven能够识别我们自定义的东西,从而进行项目的自动化构建。

约定>配置>编码

4.3.运行几个基本的Maven命令

​ mvn compile 编译
​ mvn clean 清理
​ mvn test 测试
​ mvn package 打包
​ ※注意:运行Maven命令时一定要进入pom.xml文件所在的目录!

4.4.关于联网问题

1.Maven的核心程序中仅仅定义了抽象的生命周期,但是具体的工作必须由特定的插件完成,而插件本身并不包含在Maven的核心程序中

2.当我们执行的Maven命令中需要用到某些插件时,Maven核心程序会首先到本地仓库中查找。

3.本地仓库的位置

C:\Users\ZHH\.m2\repository

4.Maven的核心程序如果在本地仓库找不到需要的插件,那么他会自动连接外网,到中央仓库下载

5.如果此时无法连接外网,则构建失败。

6.修改默认本地仓库的位置可以让Maven的核心程序到我们事先准备好的目录下查找插件

  1. 找到Maven解压目录\conf\settings.xml

  2. 在settings.xml找到localRepository标签

  3. 将/path/to/local/repo从注释中取出

  4. 将标签内容修改为已经准备好的Maven仓库目录

    <localRepository>E:\java\RepMaven</localRepository>
    
  5. POM

Project Object Model:项目对象模型。将 Java 工程的相关信息封装为对象作为便于操作和管理的模型

Maven 工程的核心配置。可以说学习 Maven 就是学习 pom.xml 文件中的配置。

8.坐标

​ 使用如下三个向量在 Maven 的仓库中唯一的确定一个 Maven 工程。

​ [1]groupid:公司或组织的域名倒序+当前项目名称

<groupId>com.atguigu.maven</groupId>

​ [2]artifactId:当前项目的模块名称

<artifactId>Hello</artifactId>

​ [3]version:当前模块的版本

<version>0.0.1-SNAPSHOT</version>

如何通过坐标到仓库中查找 jar 包

[1]将 gav 三个向量连起来

com.atguigu.maven+Hello+0.0.1-SNAPSHOT

[2]以连起来的字符串作为目录结构到仓库中查找

com/atguigu/maven/Hello/0.0.1-SNAPSHOT/Hello-0.0.1-SNAPSHOT.jar

※注意:我们自己的 Maven 工程必须执行安装操作才会进入仓库。安装的命令是:mvn install

4.5.仓库

4.5.1分类

​ [1]本地仓库:为当前本机电脑上的所有 Maven 工程服务。

​ [2]远程仓库

​ (1)私服:架设在当前局域网环境下,为当前局域网范围内的所有 Maven 工程服务。

​ (2)中央仓库:架设在 Internet 上,为全世界所有 Maven 工程服务。

​ (3)中央仓库的镜像:架设在各个大洲,为中央仓库分担流量。减轻中央仓库的压力,同时更快的响应用户请求。

4.5.2 仓库中的文件

​ [1]Maven 的插件

​ [2]我们自己开发的项目的模块

​ [3]第三方框架或工具的 jar 包

※不管是什么样的 jar 包,在仓库中都是按照坐标生成目录结构,所以可以通过统一的方式查询或依赖。

4.6.依赖

  1. 4.6.1.Maven解析依赖信息时会到本地仓库中查找被依赖的jar包。

    对于我们自己开发的Maven工程,使用mvn install命令安装后就可以进入仓库。

  2. 依赖的范围

    1. compile范围依赖
      • 对主程序是否有效:有效
      • 对测试程序是否有效:有效
      • 是否参与打包:打包
      • 是否参与部署:参与
      • 典型例子:spring-core
    2. test范围依赖
      • 对主程序是否有效:无效
      • 对测试程序是否有效:有效
      • 是否参与打包:不参与
      • 是否参与部署:不参与
      • 典型例子:junit
    3. provided范围依赖
      • 对主程序是否有效:有效
      • 对测试程序是否有效:有效
      • 是否参与打包:不参与
      • 是否参与部署:不参与
      • 典型例子:servlet-api.jar
  3. 依赖的传递性

    1. 好处:可以传递的依赖不必在每个模块工程都重复声明,在”最下面“的工程中依赖一次即可
    2. 注意:非compile范围的依赖不能传递,所以在各个工程模块中,如果有需要就要重复声明依赖。
  4. 依赖的排除

    1. 不稳定版,或对当前工程有不良影响的jar包

    2. 依赖的排除配置方式

       <exclusions> <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </exclusion> </exclusions>
      
  5. 依赖的原则:解决 jar 包冲突

    1. ]路径最短者优先

    2. 路径相同时先声明者优先

      这里“声明”的先后顺序指的是 dependency 标签配置的先后顺序。

4,7.生命周期

  1. 各个构建环节执行的顺序:不能打乱顺序,必须按照既定的正确顺序来执行。
  2. Maven的核心程序中定义了抽象的生命周期,生命周期中各个阶段的具体任务是由插件完成的。
  3. Maven核心程序为了更好的实现自动化构建,按照这一特点执行生命周期的各个阶段:不论现在要执行生命周期中的哪一个阶段,都是从这个生命周期最初的位置开始执行。
  4. 插件和目标
    1. 生命周期的各个阶段仅仅定义了要执行的任务是什么。
    2. 各个阶段和插件的目标是对应的
    3. 相似的目标由特定的插件来完成。
    4. 可以将目标看成“调用插件功能的命令”

5.在idea中使用Maven

5.1.Maven配置路径

  1. 打开settings
    1. Build
    2. Build Tools
    3. Maven
      1. Maven home directroy:Maven的安装路径
      2. User settings file:maven安装目录\conf\settings.xml
      3. Local repository:获取本地仓库的位置
      4. Runner
        1. VM Options:-DarchetypeCatalog=internal maven创建时会从网络下载一个archetype-catalog.xml做为项目的模板文件,大约有8m左右,设置这个表示不用去下载文件,加快maven创建
        2. JRE:换成自己的jdk
  2. 打开New Projects settings
    1. Setting for New Projects
      1. Build
      2. Build Tools
      3. Maven
        1. Maven home directroy:Maven的安装路径
        2. User settings file:maven安装目录\conf\settings.xml
        3. Local repository:获取本地仓库的位置
        4. Runner
          1. VM Options:-DarchetypeCatalog=internal maven创建时会从网络下载一个archetype-catalog.xml做为项目的模板文件,大约有8m左右,设置这个表示不用去下载文件,加快maven创建
          2. JRE:换成自己的jdk


2. User settings file:maven安装目录\conf\settings.xml
3. Local repository:获取本地仓库的位置
4. Runner
1. VM Options:-DarchetypeCatalog=internal maven创建时会从网络下载一个archetype-catalog.xml做为项目的模板文件,大约有8m左右,设置这个表示不用去下载文件,加快maven创建
2. JRE:换成自己的jdk


http://www.ppmy.cn/news/376385.html

相关文章

Nmon

Nmon 工具是 IBM 提供的免费的在AIX与各种Linux操作系统上广泛使用的监控与分析工具。该工具可将服务器的系统资源耗用情况收集起来并输出一个特定的文件,并可利用 excel 分析工具nmonanalyser进行数据的统计分析。并且&#xff0c;nmon运行不会占用过多的系统资源&#xff0c;…

GEE:对NDVI的时间序列使用Sen+Mann-Kendall(MK)趋势检验

文章目录 Sen+MK趋势分析结果展示Sen_slopeZ值应用案例Sen+MK趋势分析 Sen 斜率估计用于计算趋势值,通常与MK非参数检验结合使用。即首先计算Sen趋势值,然后使用MK方法判断趋势显著性。 本文使用非参数 Mann-Kendall 检验检测图像中是否存在递增或递减趋势和 Sen 斜率以量化…

正态分布方法判别,独立样本T检验及Mann-Whitney U 检验操作

正态分布方法判别&#xff0c;独立样本T检验及Mann-Whitney U 检验操作 正态性校验数据整体是否符合正态分布SPSS中的操作步骤 某分组上是否符合正态分布SPSS中的操作步骤 独立样本t检验SPSS中的操作步骤 Mann-Whitney U 检验SPSS中的操作步骤方法1操作步骤 方法2操作步骤计算各…

GEE:Sen+Mann-Kendall(MK)趋势检验教程

在地学科研中,趋势分析是非常重要的数据分析手段之一。它可以帮助我们了解地球系统中的变化趋势,从而更好地预测未来的变化。在这篇博客中,我们将介绍如何在Google Earth Engine(GEE)平台上使用Sen+Mann-Kendall(MK)趋势检验进行趋势分析,以及kendall下载不了的解决方法…

剖析GPT,背后的算法,文献,行业影响和中小企业落地建议

ChatGPT是基于Google在17年发明的Transformer自然语言模型架构。它用来训练的文本数据是爬网得来的网页中的纯文本。ChatGPT 是基于GPT-3.5版本的&#xff0c;目前的GPT-4.0 更优秀&#xff0c;政治方向更准确。而且更能懂提问的含义&#xff0c;并能读懂图片。 GPT代表“生成式…

Manacher

作用 线性时间解决最长回文子串问题。 思想 Manacher充分利用了回文的性质&#xff0c;从而达到线性时间。 首先先加一个小优化&#xff0c;就是在每两个字符&#xff08;包括头尾&#xff09;之间加没出现的字符&#xff08;如%&#xff09;&#xff0c;这样所有字符串长度…

【趋势分析方法一】MATLAB实现Mann-Kendall趋势/突变检验

MATLAB实现Mann-Kendall趋势/突变检验 非参数Mann-Kendall检验1 单变量M-K方法1.1 Mann-Kendall趋势检验1.2 Mann-Kendall突变检验1.3 MATLAB实现代码2 多变量M-K方法2.1 原理2.2 MATLAB实现代码3 参考3.1 论文参考3.2 其它语言实现MK分析非参数Mann-Kendall检验 在时间序列趋…

Python Matlab R的Mann-Kendall趋势检验

Python Matlab R的Mann-Kendall趋势检验 水文气象中推荐使用Mann-Kendall趋势检验 这是一种非参数统计检验方法&#xff0c;在中心趋势不稳定时&#xff0c;关注数据的秩。 该方法不需要不需要满足正态分布的假设&#xff0c;因而具有普适性。 根据自己需要&#xff08;图像、…