全方面熟悉Maven项目管理工具(一)认识Maven、Maven如何安装?

embedded/2024/10/21 22:16:34/

1. Maven

1.1 应用场景:

本地仓库: 我们使用的jar依赖于maven的本地仓库

自动部署: 本地仓库推送到远程仓库,

  1. 远程库通知 Jenkins工具,
  2. Jenkins 调用Maven构建war包,
  3. Jenkins 再调用准备好的脚本程序,将war包部署到docker容器中。当有多个docker容器后,就可以使用kubernetes进行管理,形成云原生

私有仓库: 可以将数据发布到 Nexus 私服中。谁需要就可以通过 Nexus 私服来获取数据

1.2 哪些人需要这门课?

小白: 快速入门

普通开发人员: 开发项目

资深开发人员: 考虑到 jar 包冲突等棘手问题还是需要精通Maven

1.3 三大学习流程:

1.3.1 先学会再说

  • 最小必要知识
  • 快速上手,学完就能用
  • 简单粗暴

1.3.2 Maven 环境开发全流程掌握

  • 基于 JavaWeb 案例使用Maven实现: 搭建环境、功能开发、应用部署
  • 基于 SSM 案例使用Maven实现: 搭建环境、功能开发、应用部署
  • 基于 SpringBoot、SpringCloud 微服务案例使用Maven实现: 搭建环境、功能开发、应用部署

1.3.3 Maven 技术体系全面覆盖

1.3.3.1 理论:
  • 声明周期体系:
    • 声明周期阶段
    • 插件和目标
    • Mojo 开发与配置
  • POM 体系:
    • 四层 POM
    • dependency 标签详解
    • build 标签详解
    • profile 标签详解
  • 属性系统:
    • java 系统属性
    • 系统环境变量
    • project 属性
    • settings 属性
    • 自定义属性
1.3.3.2 操作:
  • Nexus 私服:
    • 搭建
    • 启动和初始化
    • 下载 jar 包
    • 发布 jar 包
    • 引用 jar 包
  • jar 冲突:
    • Maven 插件检测
    • IDEA 插件检测
  • 体系外 jar 包导入:
    • 场景描述
    • 解决方法

2. 为什么要学习Maven?

2.1 Maven 作为依赖管理工具

2.1.1 jar 包的规模

随着我们使用越来越多的框架,或者框架封装程度越来越高,项目中使用的jar包越来越多,项目中,一个模块里面用到上百个jar包是非常正常的

例如下面的例子:我们只用到了 SpringBoot、Springcloud 框架中的三个功能:

  • Nacos 服务注册发现
  • Web 框架环境
  • 图模板技术 Thymeleaf

最终却导入106个 jar 包!

但如果使用Maven来引入这些 jar 包只需要配置三个依赖

2.1.2 jar 包的来源:

jar包所属技术的官网通常是英文界面,网站的结构又不尽相同,甚至找到下载链接还发现需要通过特殊的工具下载

第三方网站提供下载。问题是不规范,在使用过程中会出现各种问题:

  • jar包的名称
  • jar包的版本
  • jar包内的具体细节:类名不同,方法不存在等

而使用Maven 后,依赖对应的jar包能够自动下载,方便、快捷又规范

2.1.3 jar 包之间的依赖关系

框架中使用的jar包,不仅数量庞大,而且彼此之间存在错综复杂的依赖管理。依赖关系的复杂程度,已经上升到了完全不能靠人力手动解决的程度。另外,jar之间有可能产生冲突,进一步增加我们在 jar 包使用过程中的难度

3. Maven 作为构建管理工具

3.1 你没有注意过的构建

你可以不使用 Maven,但是构建必须要做。当我们使用IDEA开发时,构建是 IDEA 替我们做的。

3.2 脱离 IDE 环境仍需构建

在这里插入图片描述

3.3 结论

  • 管理规模庞大的 jar 包,需要专门工具
  • 脱离 IDE 环境执行构建操作,需要专门工具

4. Maven是什么?

Maven 是 Apache 软件基金会组织推虎的一款专门为 java 项目提供构建依赖管理支持的工具

在这里插入图片描述

4.1 构建

java 项目开发过程中,构建指的是使用【原材料生产产品】的过程

  • 原材料:
    • java 源代码
    • 基于 HTML 和 Thymeleaf 文件
    • 图片
    • 配置文件
  • 产品:
    • 一个可以在服务器上运行的项目

构建过程包含的主要的环节:

  • 清理: 删除上一次构建的结果,为下一次构建做好准备
  • 编译: java 源程序编译成 *.class 字节码文件
  • 测试: 运行提前准备好的测试程序
  • 报告: 针对刚才测试的结果生成一个全面的信息
  • 打包:
    • java工程:jar 包
    • Web工程:war包
  • 安装: 把一个 Maven 工程经过打包操作生成的 jar 包或 war 包安装到 Maven 仓库
  • 部署: 将准备好的 jar 包或 war 包部署到服务器上运行
    • 部署 jar 包:把一个 jar 包部署到 Nexus 私服服务器上
    • 部署 war 包:借助相关 Maven 插件(例如 cargo),将 war 包部署到 Tomcat 服务器上

4.2 依赖

如果 A 工程里面用到了 B 工程的类、接口、配置文件等等这样的资源,那么我们就可以说 A 依赖 B。例如:

  • junit-4.12 依赖 hamcrest-core-1.3

依赖管理中要解决的具体问题:

  • jar 包的下载:使用 Maven 之后,jar 包会从规范的远程仓库下载到本地
  • jar 包之间的依赖:通过依赖的传递性自动完成
  • jar 包之间的冲突:通过对依赖的配置进行跳转,让某些 jar 包不会被导入

4.3 Maven 的工作机制

在这里插入图片描述

5. 核心程序的安装

5.1 Maven 官网地址

首页:

Maven – Welcome to Apache Maven

下载地址:

Maven – Download Apache Maven

在这里插入图片描述

6. 解压Maven核心程序

核心程序压缩包:apache-maven-3.8.6-bin.zip,加压到非中文、没有空格的目录。

在解压目录中,我们需要着重关注Maven的核心配置文件:conf/settings.xml

7. 指定本地仓库

默认仓库为:Default: ${user.home}/.m2/repository

由于本地仓库的默认位置是在用户的家目录下,而家目录往往是在 C 盘。

将来Maven仓库中 jar 包越来越多,仓库体积越来越大,可能会拖慢 C 盘的运行速度,影响系统性能。所以建议将 Maven 的本地仓库放在其他盘符下。配置方式如下:

<!--更改 Maven 的settings.xml文件,添加该标签指定保存的路径--> 
<!--配置本地仓库-->
<localRepository>D:\JavaStorage:\maven-repo</localRepository>

记住: 一定要手动创建 <localrepository> 标签并配置地址

注意: 本地仓库本身也需要使用一个非中文、没有空格的目录!

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

Maven 下载 jar 包默认访问境外的中央仓库,而国外网站速度很慢。改成阿里云提供的镜像仓库,访问国内网站,可以让 Maven 下载 jar 包的时候速度更快。配置的方式如下:

8.1 原有配置

<mirrors><mirror><id>maven-default-http-blocker</id><mirrorOf>external:http:*</mirrorOf><name>Pseudo repository to mirror external repositories initially using HTTP.</name><url>http://0.0.0.0/</url><blocked>true</blocked></mirror>
</mirrors>	

8.2 加入我们的配置

<mirror><id>nexus-aliyun</id><mirrorOf>central</mirrorOf><name>Nexus aliyun</name><url>http://maven.aliyun.com/nexus/content/groups/public</url><blocked>true</blocked>
</mirror>

9. 配置 Maven 工程的基础 JDK 版本

如果按照默认配置运行,Java 工程使用的默认 JDK 版本是 1.5 ,而我们熟悉和常用的是 JDK 1.8 版本。

  • 找到 settings.xml 配置文件,在 profiles 标签中添加如下标签组

修改配置方式如下:

<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>

10. 配置环境变量

Maven 是一个用 Java 语言开发的程序,它必须基于 JDK 来运行,需要通过 JAVA_HOME 来找到 JDK 的安装位置。

10.1 配置 MAVEN_HOME

在这里插入图片描述

配置环境变量的规律:

  • XXX_HOME 通常指向的是 bin 目录的上一级
  • PATH 指向的是 bin 目录

10.2 配置PATH

编辑 Path 变量,添加变量。具体操作见图:

在这里插入图片描述

11. 测试

打开cmd命令行,输入

mvn -version

如果出来maven相关的版本信息,那么也就代表maven环境安装成功了。


http://www.ppmy.cn/embedded/129378.html

相关文章

C++11 异常处理:优势、劣势与规范

目录 一、传统错误处理方式 二、C11 异常处理机制 三、C11 异常处理的优点 四、C11 异常处理的缺点 五、总结 在 C 编程中&#xff0c;异常处理是一种重要的错误处理机制。C11 对异常处理进行了一些改进和规范&#xff0c;本文将详细介绍 C11 异常处理的特点、优势、劣势以…

建筑智能化:为你打造智能生活

在当今科技迅猛发展的时代&#xff0c;建筑智能化成为了现代社会中不可或缺的一环。它让我们的生活更加便利舒适&#xff0c;也提高了工作效率和安全性。视频监控、系统集成、智能照明、安防管理、消防管理、停车场管理、电梯管理以及信息发布&#xff0c;这些都是建筑智能化的…

AWS账号的费用结构与使用指南

亚马逊网络服务&#xff08;AWS&#xff09;是全球领先的云计算平台&#xff0c;提供各种服务&#xff0c;包括计算、存储、数据库、人工智能等。对于许多新用户来说&#xff0c;在创建AWS账号时&#xff0c;常常会有一个疑问&#xff1a;AWS账号需要费用吗&#xff1f;我们九河…

生成式人工智能如何帮助我们更有效地传达信息

来源&#xff1a;Graves, C. (2023, February 16). Generative AI can help you tailor messaging to specific audiences. Harvard Business Review. https://hbr.org/2023/02/generative-ai-can-help-you-tailor-messaging-to-specific-audiences 想象一下&#xff0c;你是一…

面向带宽受限网络的端到端IP头部压缩数据包转发框架

论文标题&#xff1a;An End-to-End IP Header Compressed Packet Forwarding Framework for Bandwidth-Constrained Networks 中文标题&#xff1a;面向带宽受限网络的端到端IP头部压缩数据包转发框架 作者信息&#xff1a;Wen-Kang Jia&#xff08;高级会员&#xff0c;IEE…

C++ string(2)

文章目录 1.初识迭代器和范围for1.1迭代器1.2范围for1.3 aout关键字 2.字符串长度相关计算1.size 和 length2. capacity 和 reserve 3.例题演示1. [917. 仅仅反转字母 - 力扣&#xff08;LeetCode&#xff09;](https://leetcode.cn/problems/reverse-only-letters/description…

关于Flutter 中,App内购支付集成 Google 签名的管理-手动生成签名 APK

Google play 手动生成签名 APK 1. 要创建一个 JKS&#xff08;Java KeyStore&#xff09;文件&#xff0c;可以使用 keytool 命令行工具。keytool 是 JDK 自带的工具&#xff0c;用于生成和管理密钥库和证书。 步骤 1&#xff1a;安装 JDK 确保已安装 JDK。如果未安装&#…

MySQL8.0以下版本重启后自增主键值丢失问题

文章目录 问题原因分析MySQL8.0以下版本MySQL8.0版本MySQL5.7版本 问题复现MySQL 5.7.22MySQL 8.0.23 解决方案升级MySQL到8.0业务代码预防 参考 问题 上周运维同学重启了UAT环境的MySQL数据库服务&#xff0c;刚开始我是不知道数据库重启了&#xff0c;先是业务服务开始异常&…