初始JavaEE篇 —— Maven相关配置

找往期文章包括但不限于本期文章中不懂的知识点:

个人主页: 我要学编程程(ಥ_ಥ)-CSDN博客

所属专栏: JavaEE

目录

介绍

创建第一个Maven项目

Maven的核心功能

项目构建

依赖管理

添加依赖

依赖排除

依赖调解

Maven仓库

配置本地仓库

Maven设置国内源


介绍

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

简单来说的话,就是 Maven是一个项目管理工具,通过pom.xml文件的配置获取jar包,而不用手动去添加jar包。

Maven最主要的核心功能是 项目构建 与 管理依赖。

创建第一个Maven项目

IDEA本身已经集成了Maven,无需去安装任何插件。

File -> New -> Project:

创建Maven与创建普通的项目并不太大的差别。Maven只是将 Build System 选项改成了 Maven。

创建成功的界面:

Maven的核心功能

接下来我们就来学习Maven的核心功能:

项目构建

Maven 提供了标准的跨平台(Linux、Windows、MacOS等)的自动化项目构建方式。

当我们在开发完一个项目之后,代码需要经过编译、测试、打包、发布逢流程,而每次代码的修改都需要经过上述流程,如果代码反复调试修改,上述流程就需要反复进行,导致这个过程十分麻烦,而Maven提供了一套简单的命令来完成项目的构建。

现阶段,我们并不需要知道上述全部的命令,只需了解下面几个:

1、clean:清理项目,通常会删除target目录下的所有文件(包括target目录),确保新的构建是从最原始开始的。简单理解就是为了避免上一次运行的结果对本次运行产生影响。

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

3、package:将编译好的代码打包成可分发的格式。例如,jar、war文件。

注意:

1、compile这里的编译将会去 编译src->main->java中的所有文件,并处理 src->main->resources中的所有文件。

2、打包是将编译生成的所有的 .class文件 全部放到一起,打包成jar包或者war包。那什么是jar包?什么又是war包呢?jar包其实就类似于一个文件夹,里面包含了各种文件,同理war包也是如此,只是针对这些文件夹起了个别名而已。而jar包与war包都是经过编译之后的文件组成,这些文件也是可以直接运行的,正所谓"write once,run anywhere"。war包通常应用于网站中。

效果演示:

clean:

注意:target目录是在编译之后就会自动生成的。

有了上述这些命令之后,我们并不需要再去命令行中敲了,只需在IDEA中双击Maven命令即可完成上述相关的操作。

依赖管理

什么是依赖?依赖是指当前项目运行所需的jar包,正因为需要基于这些文件才能运行,因此这些文件就被称为依赖。

注意:这里可能有小伙伴有疑惑:之前不是说这些文件称为jar包吗?怎么现在又叫依赖呢?jar包是文件存在的一种方式,而依赖是具体的jar包中的文件。jar包代指的是文件的一种格式,而依赖是指项目所需的外部库或资源。

其实依赖我们并不是第一次见,C语言阶段所导入的头文件,Java阶段所导入的包,这些都是项目所需的外部库,也就是依赖。

添加依赖

我们前面在学习JDBC时,也手动导入了MySQL所需的依赖。

代码演示:

html 复制代码
    <dependencies>
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <version>8.3.0</version>
        </dependency>
    </dependencies>

参数解析:

组织ID一般是某个公司或者某个组织域名的倒写。这里就是 com.mysql。

项目ID就是指具体哪个项目。

版本号是指项目具体的版本。

以上三者可以确定一个唯一的依赖,或者说一个唯一的项目。

组织ID找到对应的公司或者组织,项目ID找到具体是哪个项目,版本号找到具体是哪个版本。

以上只是正确找到了所需的外部库,如果想要导入到我们的项目中,就得将这些外部库,也就是jar包下载到我们本地仓库中来。

当我们修改pom文件之后,在文件的有上角会有一个刷新的小标志,我们只需要点击这个标志,然后观察右边是否出现了对应的依赖即可。

如果没有找到右上角的刷新图标也没关系,我们可以直接去找 Maven 中的刷新:

每次修改pom文件之后,一定要记得及时刷新。

这里还推荐一个插件:Maven Helper。

找到 File -> Settings -> Plugins:

下载好之后,重启一下IDEA即可。

在重启IDEA之后,就可以去查看 依赖的关系了:

早期我们没有使用Maven时,向项目中添加依赖的jar包,需要把所有的jar包都复制到项目工程下。比如A 依赖B,B依赖C,那么 A项目引入B 的同时,也需要引入C,如果我们手动管理这个依赖,这个过程就会比较麻烦,我们需要知道每个库都依赖哪些库,以及这些依赖之间的版本是如何关联的。 但使用maven的话,就可以避免管理所需依赖的关系。我们只需要在pom文件中,定义直接依赖就可以了,由于maven的依赖具有传递性,所以会自动把所依赖的其他jar包也一起导入。

上述JDBC所需的依赖是MySQL,但MySQL自身也是依赖于protobuf的,因此还得将导入protobuf,这里就是Maven自己完成了,而不需要我们手动导入。

JDBC是直接依赖于MySQL,间接依赖于protobuf的。

依赖排除

我们已经知道了,一个项目依赖的库有很多,但有些库是随着别的库一起导入的,且我们的项目中用不到该库,那我们就可以排除这些依赖。

代码演示:

html 复制代码
    <dependencies>
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <version>8.3.0</version>

            <!-- 排除依赖 -->
            <exclusions>
                <exclusion>
                    <groupId>com.google.protobuf</groupId>
                    <artifactId>protobuf-java</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

排除之后如果需要的话,也可以继续加上:

html 复制代码
    <dependencies>
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <version>8.3.0</version>

            <!-- 排除依赖 -->
            <exclusions>
                <exclusion>
                    <groupId>com.google.protobuf</groupId>
                    <artifactId>protobuf-java</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    
        <!-- 加上依赖 -->
        <dependency>
            <groupId>com.google.protobuf</groupId>
            <artifactId>protobuf-java</artifactId>
            <version>3.25.1</version>
        </dependency>
    </dependencies>

除了使用代码排除之后,还可以手动排除:

当我们使用这种方式去排除依赖时,它会将我们代码中添加依赖的部分直接给删除。

但是上面这种手动排除的方式不一定会成功。

例如,当我们把添加依赖的代码改成下面这样时:

html 复制代码
    <dependencies>
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <version>8.3.0</version>
        </dependency>
    </dependencies>

这里我们要排除的protobuf,就会失败,IDEA会有一个弹窗:

就是说使用Maven Helper插件去排除依赖时,被排除的依赖得是父依赖,即其自身没有父依赖。

依赖调解

当我们导入依赖A时,会随之导入上述诸多依赖,但是会存在一个问题:依赖C有两个导入哪一个呢? Maven会采用最短路径优先的原则去选择依赖,这里A->B->C路径更短,所以会选择这条路,当然我们也可以选择指定某个依赖的版本,这就需要先去排除依赖C,然后再添加依赖C,并指定对应的版本。

Maven仓库

我们在添加依赖并刷新时,对应的依赖就会被下载到本地的Maven仓库。而下次我们再去添加依赖时,首先会在本地仓库中去寻找,如果没有再去中央仓库中下载到本地仓库。

在了解中央仓库之间,先了解仓库的分类,仓库分为两种:本地仓库 与 远程仓库。本地仓库是指本地硬盘上存储的,远程仓库是指,除本地仓库之外的所有仓库的统称,包括:中央仓库、私服、其他公共仓库。中央仓库是全球唯一的一份(超级巨大)、私服是公司或组织只开放给内部人使用的、其他公共仓库是指公司或组织为了更方便的访问,将公共仓库中的依赖拷贝到本地服务器了,对外提供开放的。

配置本地仓库

本地仓库一般都是在C盘的,而其中下载的依赖会很多,我们可以将路径改为D盘或者其他盘。

File -> Settings:

中央仓库的地址:Central Repository:

可以通过 https://mvnrepository.com/ 这个网站来查询(如果查询不到,再去中央仓库查询)。

Maven设置国内源

因为中央仓库在国外,所以下载起来会比较慢。因此咱们选择借助国内一些公开的远程仓库来下载资源。

首先得找到 C:\Users\jiume\.m2\settings.xml 并双击打开:

代码:

html 复制代码
        <mirror>
          <id>aliyunmaven</id>
          <mirrorOf>*</mirrorOf>
          <name>阿里云公共仓库</name>
          <url>https://maven.aliyun.com/repository/public</url>
        </mirror>

做完以上操作,Maven就已经设置好国内源了。

1、配置当前项目:当前项目在配置本地仓库时,已经配置完了(User setting file)。

2、配置新项目:

与之前的操作一样。

好啦!初始JavaEE篇 ------ Maven相关配置 的学习之旅 就到此结束啦!我们下一期再一起学习吧!

相关推荐
全栈凯哥几秒前
Java详解LeetCode 热题 100(26):LeetCode 142. 环形链表 II(Linked List Cycle II)详解
java·算法·leetcode·链表
chxii2 分钟前
12.7Swing控件6 JList
java
全栈凯哥3 分钟前
Java详解LeetCode 热题 100(27):LeetCode 21. 合并两个有序链表(Merge Two Sorted Lists)详解
java·算法·leetcode·链表
YuTaoShao4 分钟前
Java八股文——集合「List篇」
java·开发语言·list
PypYCCcccCc9 分钟前
支付系统架构图
java·网络·金融·系统架构
华科云商xiao徐30 分钟前
Java HttpClient实现简单网络爬虫
java·爬虫
扎瓦43 分钟前
ThreadLocal 线程变量
java·后端
BillKu1 小时前
Java后端检查空条件查询
java·开发语言
jackson凌1 小时前
【Java学习笔记】String类(重点)
java·笔记·学习
刘白Live1 小时前
【Java】谈一谈浅克隆和深克隆
java