《JavaEE进阶》----2.<Spring前传:Maven项目管理工具>

2024-08-28 01:20

本文主要是介绍《JavaEE进阶》----2.<Spring前传:Maven项目管理工具>,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本篇博客讲解我们在使用Spring框架时所要用到的Maven这个项目管理工具
它可以更方便的管理我们的项目,比如通过

1.常用的Maven命令来进行编译、测试、打包、清理包等等,不仅如此,

2.Maven还可以对依赖进行管理,方便我们添加依赖、管理依赖。让我们快速获取到我们想要的依赖,而不用自己添加依赖的jar包。

一、Maven项目管理工具

1.1什么是Maven

Maven是⼀个项目管理⼯具。基于POM(Project Object Model,项目对象模型)的概念,Maven可以通过一小段描述信息来管理项目的构建,报告和文档的项⽬管理工具软件。

Maven我的理解

大白话: Maven是⼀个项目管理⼯具, 通过pom.xml文件的配置获取jar包,而不用手动去添加jar包

注:maven是可以单独使用的,跟idea没关系,只是idea把maven集成进来了

1.2 为什么要学Maven

⼀句话: 简单,方便,

提高我们的开发效率,减少我们的开发Bug.Maven提供的功能非常多

Maven我们主要是了解以下两个方面:
1. 项目构建
2. 管理依赖

1.3项⽬构建

创建maven项目

如下图在构建系统中选择Maven

1.4 Maven命令

在右边我们可以找到一个有M的图标,那就是Maven。相当于Maven的管理工具。

Maven的一些命令也在里面

常用命令 

clean  清理class文件。可以把包清理掉。(通常是target目录。)

package   打包。点击之后会进行打jar包,此时idea文件目录中会出现target文件。包就在这里面。当出现BUILD SUCCESS说明打包成功。

install   编译、测试、打包,并将构建好的jar/war包安装到本地 Maven 仓库。工作中常用来发布包到本地。

deploy 编译、测试、打包,并将构建的工件部署到远程 Maven 仓库。工作中常用来发布包到远程Maven仓库。

其他命令

compile:编译项目的源代码,将.java文件编译为.class文件,在开发过程中检查代码的编译是否成功,或在构建前进行编译。

test:运行项目中的单元测试。验证代码的正确性,确保新代码没有破坏现有功能。

validate:当你刚刚创建或修改了pom.xml时,检查其配置是否有效。

site:生成项目的站点文档,包括项目的各种报告(如 Javadoc、测试报告、依赖关系等)。当你需要生成项目文档以供查看或发布时会用到

verify:执行项目的集成测试,验证项目是否已准备好进行发布。它包括编译、测试等步骤,并在这之后运行可能存在的集成测试。当你需要确保项目中的代码不仅通过了单元测试,还通过了集成测试,并符合发布标准时使用。

1.5依赖管理

上面说到,Maven是⼀个项目管理⼯具,

通过pom.xml文件的配置获取jar包,而不用手动去添加jar包
获取的jar包,其实就是依赖.
pom.xml就是maven的配置⽂件,用以描述项⽬的各种信息

如下图,在文件目录中找到pom.xml文件

依赖配置
依赖:指当前项⽬运⾏所需要的jar包.


添加依赖

如果大家了解了前端,那么相当于我们在<dependencies>标签中添加依赖的坐标。,如下。
<dependencies>
这里面放置依赖的坐标,可以为多个。
</dependencies>

通过

<dependencies>

              <dependency> 

             </dependency>

</dependencies>

进行添加依赖

示例(我们添加8.0.30版本的mysql依赖):

<dependency>

        < groupId>mysql<groupId>

        <artifactId>mysql-connector-java<artifactId>

        <version>8.0.30<version>

<dependency>

代码编写好之后,需要点击刷新按钮就可以完成添加依赖,

此时我们就可以看见旁边文件目录中多了些jar包

例如:我们添加依赖如下

<dependencies>

        <dependency> 

                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>8.0.30</version>

        </dependency>

</dependencies>

 再点击这个刷新按钮,如果没有我们点击旁边的m。

此时如上图,就出现了刷新的按钮。

第二行,第一个刷新按钮也是可以进行刷新的。

我们点击刷新之后:我们在左边外部库中观察依赖有没有进来

 

我们发现,在外部库中,除了最开始有的<1.8>

还多了两个有关于Maven的。

其中第一个是mysql的依赖。是mysql还需要依赖的别的jar包

第二个则是我们添加的

我们发现Maven依赖不仅把当前的jar包依赖进行,还把这个jar包依赖的jar包依赖进来到项目之中

Maven对我们进行的依赖管理,会把当前依赖的依赖也会引入到当前项目中。

多余的那个是因为mysql应用的那个jar包里面的东西,因此也会被依赖到项目之中。

查看依赖关系

此时 我们需要用到一个插件来进行查看依赖关系

安装Maven Helper插件        

安装插件

主菜单>设置>插件

安装完之后pom文件中会出现一个插件框

文本旁边的选项,就是进行依赖分析的。点击之后,我们就会看到依赖关系 

 

上面有多种模式来展示依赖关系

1.Conflicts冲突

2.所有依赖以列表形式显示

3.所有依赖以树的结构显示

4.显示组ID

5.显示依赖大小

依赖代码分析

<dependencies>

        <dependency> 

                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>8.0.30</version>

        </dependency>

</dependencies>

 整个描述我们称之为依赖的坐标,我们可以确定jar包固定的位置

是基于Maven仓库的坐标

Maven仓库地址:

仓库的分类:

分为

本地仓库:随着使用时间越来越长,下载jar包越来越多占用硬盘空间越来越大

远程仓库

其中

远程仓库又分为中央仓库和私有仓库

本地仓库地址:

远程仓库地址:

1.仓库地址:中央仓库地址https://repo1.maven.org/maven2/

2.查询界面地址: 查询界面https://mvnrepository.com/

这两个有可能不一致, 以仓库地址为准。查询界面会有一定的滞后性。

仓库地址在国外。

 3.国内源:将国外的仓库地址搬到国内.我们可以自己设置

4.私服:中央仓库和国内源都是公开的,所有人都可以看到,企业开发时,一些项目代码具有一定的私密性。不会公开,因此企业会建立自己的私服,访问需要账号密码。

1.6刷新依赖来源

我们自己引入依赖:

本地仓库   >   本地仓库去中央仓库拿,下载后从本地仓库拿。

本地仓库最开始的时候是空的。最终我们所使用到的代码都可以从本地仓库拿

私服:

先从本地仓库拿,若没有去私服,私服也没有去中央仓库拿。返回到私服,私服再返回到本地。

一个jar包只下载一次。本地没有则去私服拿,私服没有才会去中央仓库拿 

中央仓库也包含国内源。 

1.7设置国内源(访问会更快)

仅限于在学习阶段,公司中不用国内源,而是直接用私服。若在公司去找同事要setting文件就好了。

setting文件用来配置Maven。

因为公司可能不让用Maven的阿里云镜像地址等等。。

这样setting文件里会包含公司的私服账号地址密码等等信息

在设置中,找到构建、执行、部署。中构建工具中有Maven项。用户设置文件中有setting文件。

如下图

在其中找到用户设置文件。打开文件,里面有一个settings.xml 

如何设置国内源? 

1.修改settings.xml文件

2.如果没有settings.xml文件,则找一个。

Maven仓库默认在国外https://mvnrepository.com/,国内使⽤时会⽐较慢,我们可以更换为阿⾥云的仓库
也可以选择别的仓库,参考:Maven镜像地址⼤全


打开settings.xml,在mirrors节点上,添加内容如下:
<mirror>
        <id>aliyunmaven</id>
        <mirrorOf>central</mirrorOf>
        <name>阿⾥云公共仓库</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>

settting文件在我的桌面中的Maven配置文件中哦

注意:所设置的目录,如项目路径,等不要有中文路径!!!!

目录如果包含中文,如何修改?

1.创建你期望放的目录

2.进入当前Maven配置目录到.m2

3.复制.m2中的文件到你创建的目录

4.修改idea配置

  • 修改Maven仓库目录

修改用户设置文件目录和本地仓库目录。并且打上两个重写的√

注意分别指定settings.xml文件和repository

  • 新项目设置

选择文件->新建项目设置->新项目的设置->构建、执行、部署->构建工具->Maven

再把相应目录重写改一下。

这篇关于《JavaEE进阶》----2.<Spring前传:Maven项目管理工具>的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1113325

相关文章

Java中流式并行操作parallelStream的原理和使用方法

《Java中流式并行操作parallelStream的原理和使用方法》本文详细介绍了Java中的并行流(parallelStream)的原理、正确使用方法以及在实际业务中的应用案例,并指出在使用并行流... 目录Java中流式并行操作parallelStream0. 问题的产生1. 什么是parallelS

Java中Redisson 的原理深度解析

《Java中Redisson的原理深度解析》Redisson是一个高性能的Redis客户端,它通过将Redis数据结构映射为Java对象和分布式对象,实现了在Java应用中方便地使用Redis,本文... 目录前言一、核心设计理念二、核心架构与通信层1. 基于 Netty 的异步非阻塞通信2. 编解码器三、

SpringBoot基于注解实现数据库字段回填的完整方案

《SpringBoot基于注解实现数据库字段回填的完整方案》这篇文章主要为大家详细介绍了SpringBoot如何基于注解实现数据库字段回填的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解... 目录数据库表pom.XMLRelationFieldRelationFieldMapping基础的一些代

一篇文章彻底搞懂macOS如何决定java环境

《一篇文章彻底搞懂macOS如何决定java环境》MacOS作为一个功能强大的操作系统,为开发者提供了丰富的开发工具和框架,下面:本文主要介绍macOS如何决定java环境的相关资料,文中通过代码... 目录方法一:使用 which命令方法二:使用 Java_home工具(Apple 官方推荐)那问题来了,

Java HashMap的底层实现原理深度解析

《JavaHashMap的底层实现原理深度解析》HashMap基于数组+链表+红黑树结构,通过哈希算法和扩容机制优化性能,负载因子与树化阈值平衡效率,是Java开发必备的高效数据结构,本文给大家介绍... 目录一、概述:HashMap的宏观结构二、核心数据结构解析1. 数组(桶数组)2. 链表节点(Node

Java AOP面向切面编程的概念和实现方式

《JavaAOP面向切面编程的概念和实现方式》AOP是面向切面编程,通过动态代理将横切关注点(如日志、事务)与核心业务逻辑分离,提升代码复用性和可维护性,本文给大家介绍JavaAOP面向切面编程的概... 目录一、AOP 是什么?二、AOP 的核心概念与实现方式核心概念实现方式三、Spring AOP 的关

详解SpringBoot+Ehcache使用示例

《详解SpringBoot+Ehcache使用示例》本文介绍了SpringBoot中配置Ehcache、自定义get/set方式,并实际使用缓存的过程,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录摘要概念内存与磁盘持久化存储:配置灵活性:编码示例引入依赖:配置ehcache.XML文件:配置

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

Java中的.close()举例详解

《Java中的.close()举例详解》.close()方法只适用于通过window.open()打开的弹出窗口,对于浏览器的主窗口,如果没有得到用户允许是不能关闭的,:本文主要介绍Java中的.... 目录当你遇到以下三种情况时,一定要记得使用 .close():用法作用举例如何判断代码中的 input

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注