【Maven】Maven快速入门2022版:从概念、安装到基本使用

news2024/11/24 20:25:02

请添加图片描述


本期目录

  • 一、 简介
    • 1. Maven优点
    • 2. 强大的依赖管理
    • 3. 工作原理
      • 3.1 POM
      • 3.2 Maven模型
  • 二、 安装配置
    • 1. Maven核心程序解压与配置
      • 1.1 解压
      • 1.2 指定本地仓库
      • 1.3 配置阿里云提供的镜像仓库
      • 1.4 配置Maven工程的基础JDK版本
    • 2. 配置环境变量
      • 2.1 检查 JAVA_HOME
      • 2.2 配置MAVEN_HOME
  • 三、 Maven使用:命令行
    • 3.1 要求
    • 3.2 清理操作
    • 3.3 编译操作
    • 3.4 测试操作
    • 3.5 打包操作
    • 3.6 安装操作
    • 3.7 Maven生命周期
  • 四、 IDEA配置Maven
    • 1. IDEA配置Maven环境
    • 2. Maven坐标详解
      • 2.1 什么是坐标
      • 2.2 Maven坐标三要素
    • 3. IDEA创建Maven项目
    • 4. IDEA导入Maven项目
    • 5. 依赖管理
      • 5.1 导入依赖的步骤
      • 5.2 获取其他依赖的坐标
      • 5.3 自动生效
      • 5.4 快捷添加依赖


一、 简介


1. Maven优点

  • 第一,提供了一套标准化的项目结构。使用 Maven 构建出来的项目目录结构都是相同的,这样做最大的好处是不同的 IDE 创建的 Maven 项目都可以通用。如下图所示:

    image-20221203162052191

  • 第二,提供了一套标准化的构建流程。即编译 --> 测试 --> 打包 --> 发布……。

    image-20221203163254739

  • 第三,提供了一套依赖管理机制。这是我个人认为 Maven 最灵魂和核心的功能,只需要在 pom.xml 文件中书写依赖的坐标,无需其他操作就能让 Maven 帮你管理众多依赖。

    image-20221203163556317


2. 强大的依赖管理


  • 当程序员在 pom.xml 文件中输入依赖的 Maven 坐标后,Maven 会先去本地的 Maven 仓库中查询是否已经存在该依赖的 jar 包:

    • 如果存在,则直接导入;
    • 如果不存在,则会自动前往网络上的远程 Maven 仓库搜索并下载该依赖到本地 Maven 仓库,再导入到项目中。

    image-20221203165402655

【小贴士】

  • 由于 Maven 官方的中央仓库服务器架设在国外,在国内访问速度会很慢。在实际企业开发中,我们通常会使用国内的远程仓库 (私服) ,例如阿里云等。以提高依赖的下载速度。

3. 工作原理


3.1 POM

  • Maven 是基于项目对象模型 (Project Object Model, POM) 的概念,通过一小段描述信息 (Maven 坐标) 来管理项目的构建、报告和文档。

3.2 Maven模型

image-20221203164503909


二、 安装配置


1. Maven核心程序解压与配置


1.1 解压

  • 官网:Maven – Welcome to Apache Maven

  • 点击 Download :

    image-20220922103732269

  • Windows 系统下载:

    image-20220922103907499

  • 解压:

    image-20220922104204405

  • 重点关注 conf\settings.xml 配置文件。


1.2 指定本地仓库

  • 打开 conf\settings.xml 配置文件,本地仓库默认在 C 盘,不好,改到 E 盘。一般我的个人习惯是把本地仓库目录放在 Maven 的安装目录下。

    <!-- localRepository
     | The path to the local repository maven will use to store artifacts.
     |
     | Default: ${user.home}/.m2/repository
    <localRepository>/path/to/local/repo</localRepository>
    -->
    <localRepository>E:\maven\maven-repo</localRepository>
    

1.3 配置阿里云提供的镜像仓库

  • 将配置原有的注释掉即可。

  • 解决外网下载速度慢的问题:

    <mirrors>
        <!-- mirror
         | Specifies a repository mirror site to use instead of a given repository. The repository that
         | this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
         | for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
         |
        <mirror>
          <id>mirrorId</id>
          <mirrorOf>repositoryId</mirrorOf>
          <name>Human Readable Name for this Mirror.</name>
          <url>http://my.repository.com/repo/path</url>
        </mirror>
         -->
        <mirror>
            <id>nexus-aliyun</id>
            <mirrorOf>central</mirrorOf>
            <name>Nexus aliyun</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public</url>
        </mirror>
    </mirrors>
    

1.4 配置Maven工程的基础JDK版本

  • 默认是 JDK 1.5 ,改成 JDK 1.8 。

    <profile>
        <id>jdk-1.8</id>
        <activation>
            <activeByDefault>true</activeByDefault>
            <jdk>1.8</jdk>
        </activation>
        <properties>
            <maven.compiler.source>1.8</maven.compiler.source>
            <maven.compiler.target>1.8</maven.compiler.target>
            <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
        </properties>
    </profile>
    

2. 配置环境变量


2.1 检查 JAVA_HOME

  • JAVA_HOME 变量,到 bin 目录的上一级:

    image-20220922113337390

  • 调出 Windows 控制台,输入以下:

    C:\Users\92490>echo %JAVA_HOME%
    C:\Program Files\Java\jdk1.8.0_321
    
  • PATH 变量,到 bin 目录:

    image-20220922113829309

  • 调出 Windows 控制台,输入以下:

    C:\Users\92490>java -version
    java version "1.8.0_321"
    Java(TM) SE Runtime Environment (build 1.8.0_321-b07)
    Java HotSpot(TM) 64-Bit Server VM (build 25.321-b07, mixed mode)
    

2.2 配置MAVEN_HOME

  • MAVEN_HOME 变量,到 bin 目录的上一级:

    image-20220922114525414

  • PATH 变量,到 bin 目录:

    image-20220922114619960

  • 验证:调出 Windows 控制台,输入以下:

    C:\Users\92490>mvn -v
    Apache Maven 3.8.6 (84538c9988a25aec085021c365c560670ad80f63)
    Maven home: E:\Program Files\Maven
    Java version: 1.8.0_321, vendor: Oracle Corporation, runtime: C:\Program Files\Java\jdk1.8.0_321\jre
    Default locale: zh_CN, platform encoding: GBK
    OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
    

三、 Maven使用:命令行


3.1 要求

  • 运行 Maven 中和构建操作相关的命令时,必须进入到 pom.xml 所在的目录。如果没有在 pom.xml 所在的目录运行 Maven 的构建命令,那么会看到下面的错误信息:

    The goal you specified requires a project to execute but there is no POM in this directory
    

3.2 清理操作

mvn clean

删除 target 目录。


3.3 编译操作

命令作用
mvn compile主程序编译
mvn test-compile测试程序编译
target/classes主题程序编译结果存放的目录
target/test-classes测试程序编译结果存放的目录

3.4 测试操作

mvn test

测试的报告存放目录:target/surefire-reports


3.5 打包操作

mvn package
  • 把编译好的字节码文件打包成 jar / war 包,存放目录:target/

3.6 安装操作

mvn install
  • 将本地构建的 jar 包存入 Maven 本地仓库,还会将 pom.xml 文件转换为 XXX.pom 一起存入本地仓库,两者本质上是同一个文件。这个本地仓库就是在 \conf\settings.xml 文件指定的本地仓库。

3.7 Maven生命周期

  • Maven 对项目构建的生命周期划分为 3 套:
    • clean:清理工作;
    • default:核心工作;如编译、测试、打包、安装……
    • site:产生报告、发布站点等 (不常用) ;
  • 同一生命周期内,执行后边的命令,前面所有的命令都会自动执行。

image-20221203171315520

  • 举例,当执行 mvn package 时,会自动把 mvn compilemvn test 也执行了,最后才执行 mvn package 。因此,当你打包时如果不想执行 mvn test 造成数据库污染时,必须跳过测试步骤。

四、 IDEA配置Maven


1. IDEA配置Maven环境

  • IDEA 默认是配置了一个 Maven 环境。但我们更喜欢使用自己安装的 Maven 环境。下图是 IDEA 默认配置的 Maven 环境。image-20221203173046629

  • 修改 Maven 的 home 目录为自己安装的 Maven 目录。在 Maven home path 处修改:

    image-20221203173425791

  • 修改 Maven 配置文件路径。在 User settings file 处,先勾选【Override】,再去修改为自己的 Maven 配置文件路径:

    image-20221203173716054

  • 选择好 Maven 配置文件后,本地仓库的路径也自动帮我们修改好了。红框里的本地仓库目录就是我在 Maven 配置文件 settings.xml 中配置的本地仓库路径。

    image-20221203173918320

  • 上面所有完成后,点击【OK】,IDEA 中的 Maven 环境就配置好了。


2. Maven坐标详解


2.1 什么是坐标

  • Maven 中的坐标是资源的唯一标识;
  • 使用坐标来定义项目或者引入项目中需要的依赖。

2.2 Maven坐标三要素

  • Maven 识别 jar 包使用三个要素唯一识别:
    • groupId:公司或组织域名的倒序,通常也会加上项目名
    • artifactId:一个项目中的 Module
    • version:版本号

3. IDEA创建Maven项目

  • 新建项目,选择 New Project ,填写项目名称、存放路径、【Build system】选择 Maven 、填写坐标信息,点击【Create】,创建完成。

    image-20221203191236156

  • test 目录下新建文件夹,IDEA 会自动提示补全 resource 文件夹:

    image-20221203191811866

    image-20221203191833776

  • 这样,一个完整的 Maven 项目目录就创建出来了:

    image-20221203192011076


4. IDEA导入Maven项目

  • 选择右侧 Maven 面板,点击【+】号:

    image-20221203192626821

  • 选中对于项目的 pom.xml 文件,双击即可导入 Maven 项目 (以一个模块 Module 的形式导入到当前项目) 。


5. 依赖管理


5.1 导入依赖的步骤

  1. pom.xml 中编写 <dependencies> 标签;
  2. dependencies 标签中使用 <dependency> 引入坐标;
  3. 定义坐标的 <groupId><artifactId><version>
  4. 点击刷新按钮,使坐标生效。

image-20221203181658422


5.2 获取其他依赖的坐标

  • 推荐在这个网站去搜索,选择一个下载量大的版本,复制其 Maven 坐标即可。
  • Maven 坐标网站:https://mvnrepository.com/

5.3 自动生效

  • 由于每次修改完 Maven 的 pom.xml 文件都需要手动点击刷新才生效,太麻烦。我们可以通过下面 IDEA 的设置,当修改完 pom.xml 文件就自动刷新生效。

    image-20221203183006667


5.4 快捷添加依赖

  • 有一些已经在本地仓库的依赖,我们可以不用在 pom.xml 文件中一个一个字手敲。而是可以在 pom.xml 文件的界面,按下快捷键 Alt + Insert ,选择 Add Dependency… 。

    image-20221203184252994

  • 可以搜索、选择版本和添加。

    image-20221203184627415

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/58229.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

9、Springboot整合Swagger3

1.什么是Swagger&#xff1f; 我们在编写了大量的接口之后&#xff0c;如果接口的调用者不是自身的话&#xff0c;那么就会面临要编写接口文档的苦恼&#xff0c;这时候Swagger就应运而生了。 Swagger 是一个规范和完整的框架&#xff0c;用于生成、描述、调用和可视化 RESTf…

笔试强训(四十)

目录一、选择题二、编程题2.1 发邮件2.1.1 题目2.1.2 题解一、选择题 &#xff08;1&#xff09;上网的时候&#xff0c;访问某个页面却突然出现了某个运营商的网页&#xff0c;出现此问题可能的原因是&#xff08;A&#xff09; A.DNS劫持 B.DDos攻击 C.MAC地址欺骗 D.伪造DH…

springboot+zookeepr+dubbo的远程服务调用

首先一定确保zookeeper正常工作 公共接口模块 为了简化代码&#xff0c;可以把需要其他服务调用的接口&#xff0c;抽取为公共接口模块dubbo-common-service&#xff0c; public interface TestService {public String clientTest(); }服务提供方 导入dubbo、zookeeper依赖…

Python学习基础笔记十六——函数嵌套

1、函数的嵌套调用 def max(a, b):if a > b:return aelse:return bdef the_max(x, y, z): # 函数的嵌套调用c max(x, y)return max(c, z)print(the_max(1, 2, 3)) 2、函数的嵌套定义&#xff1a; a 1def outer():a 1def inner():b 2print(a)print(Inner)def inner2(…

【GlobalMapper精品教程】033:影像地图羽化方式详解

在Globalmapper中,可以很方便的对影响进行多种羽化值设置。 文章目录 1. 不要羽化此图层2. 沿一个或多个边缘羽化3. 羽化到有效数据的多边形覆盖4. 在当前选定的多边形内羽化5. 裁剪到选定的边界,而不是羽化6. 在多边形外部羽化,而不是内部加载配套案例数据包中的data033.ra…

Java基于springboot+vue的家用电器销售购物商城系统 前后端分离

开发背景和意义 随着人们生活的改变&#xff0c;家电基本在家家户户都存在&#xff0c;常用的家电例如冰箱&#xff0c;洗衣机&#xff0c;电视机&#xff0c;空调等设备可以让人们的生活方式变的更加快捷舒适&#xff0c;通常情况下人们购买家电的话都是到指定的家电销售场所…

带你全方位了解光谱共焦位移传感器

任何一个行业的产生和发展都离不开科学技术的进步&#xff0c;这也是市场需求量不断扩大产生的对行业的促进&#xff0c;促使相关人员对产品的不断更新换代&#xff0c;光谱共焦位移传感器的发展也是发生着日新月异的变化。 光谱共焦位移传感器原理&#xff1a; 一束白光&#…

vue基于 input 实现密码的显示与隐藏功能

目录前言&#xff1a;一、准备图标二、Vue程序界面的展示三、代码总结&#xff1a;前言&#xff1a; 大家都知道&#xff0c;一般情况下&#xff0c;输入框的密码我们是看不到密码的&#xff0c;只有当我们点击查看密码的小图标时&#xff0c;密码才会显现出来&#xff0c;实现…

3D深度相机---结构光

去年的仪器仪表的课有汇报&#xff0c;我还专门为3D深度像机做了个调研&#xff0c;一直用inter realsense的&#xff0c;最近老师让看结构光方案的&#xff0c;正好总结一下。 1. 结构光(Structured-light) 由于基于双目立体视觉的深度相机对环境光照强度比较敏感&#xff0…

台式电脑怎么格式化重装系统

我们都知道电脑重装系统默认是会格式化磁盘的&#xff0c;那么如果是自己选择需要格式化的其它磁盘需要怎么操作呢&#xff1f;一般我们都是在pe里面手动格式化磁盘&#xff0c;这样就能避免直接格式化导致的某些问题了&#xff0c;下面就来讲讲台式电脑怎么格式化重装系统吧。…

[信息系统项目管理师-2023备考]信息化与信息系统(二)

目录 一、软件工程 1.需求 1.1 需求分类 1.2 需求分析 2.UML 2.1 类图 2.2 对象图 2.3 构件图 2.4 组合结构图 2.5 用例图 2.6 顺序图 2.7 通信图 2.8 定时图 2.9 状态图 2.10 活动图 2.11 部署图 3.软件架构 4.软件设计 4.1 设计模式分类 4.2 能力成熟度模…

Docker:入门

目录 一、Docker简介 二、Docker安装及环境配置 准备工作 ①通过 uname -r 命令查看你当前的内核版本 ②使用 root 权限登录 Centos。确保 yum 包更新到最新 ③卸载旧版本(如果安装过旧版本的话) ④安装需要的软件包&#xff0c; yum-util 提供yum-config-manager功能&…

统计信号处理基础 习题解答6-11

题目&#xff1a; 考虑WSS中估计DC电平问题&#xff0c;给定 其中 是零均值WSS随机过程&#xff0c;ACF为 &#xff0c;估计A。建议在 时用图6.5所示的FIR滤波器的输出来估计A。注意估计量为&#xff1a; 输入 假定在n<0 时为零。为了得到更好的估计量&#xff0c;我们希望…

近邻法总结

目录1.最近邻法2.k-近邻法3.近邻法的快速算法4.剪辑近邻法5.压缩近邻法6.错误率分析1.最近邻法 算法思想 对于一个新样本&#xff0c;把它逐一与已知样本比较&#xff0c;找出距离新样本最近的已知样本&#xff0c;以该样本的类别作为新样本的类别。算法描述 2.k-近…

【MySQL入门实战1】-数据库三大范式

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【IT邦德】&#xff0c;江湖人称jeames007&#xff0c;10余年DBA工作经验 一位上进心十足的【大数据领域博主】&#xff01;&#x1f61c;&#x1f61…

[oeasy]python0024_ 输出时间_time_模块_module_函数_function

输出时间 回忆上次内容 ​print​​函数 有个默认的 ​​end参数​ ​​end参数​​ 的值可以是任意字符串​​end参数​​ 的值会输出到结尾位置​​end参数​​ 的默认值是 ​​\n​​ 如果​​end​​是空串(​​end""​​) 意味着输出后不自动换行我可以手动在…

自制肥鲨HDO2电源延长线,支持3S~6S动力电池

自制肥鲨HDO2电源延长线&#xff0c;支持3S~6S动力电池1. 问题源由2. 破题思路2.1 10元大钞搞定2.2 两个毛爷爷搞定3. 解决方案4. 最终延长线产出4.1 裸照4.2 成品1. 问题源由 源由&#xff1a; 电池盒电源线接触不良。 肥鲨眼镜的电源盒问题由来已久&#xff0c;而且主要问题…

NNDL实验 知识点梳理

目录 实验内容 编程基础 机器学习基础 FNN CNN RNN 网络优化与正则化 扩展实验 建议自学实验 实验基本步骤 实验涉及知识点 知识点相关细节 更多细节 实验内容 编程基础 NNDL 实验一 numpy NNDL 实验二 pytorch 机器学习基础 NNDL 实验三 线性回归 NNDL 实验…

笔记(上):mysql-DuplicateUpdate和java的threadpool的“死锁“

今天给大家讲讲最近2个有意思的issue&#xff0c;分享一下我学到的 mysql DuplicateUpdate的用法要注意的点java的threadpool使用不当会造成“死锁”问题 mysql DuplicateUpdate的用法要注意的点 有个issue说遇到了一个这样的问题&#xff0c; 这个朋友使用我开源的job调度框…

软件包管理器yum与编辑器vim的使用

目录yum的背景yum的生态yum的本土化&#xff08;换源&#xff09;yum的使用查看软件包安装软件卸载软件vim的使用Vim的基本基本介绍Vim的模式切换Vim的光标定位Vim的文本复制Vim的文本编辑Vim的底行模式的操作vim的配置管理员权限(sudo)的配置yum的背景 yum的生态 在日常的生…