初始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相关配置 的学习之旅 就到此结束啦!我们下一期再一起学习吧!

相关推荐
爱是小小的癌7 分钟前
Java-数据结构-顺序表(ArrayList)
java·开发语言·数据结构
_UMR_14 分钟前
Logback的使用
java·spring boot·logback
武子康36 分钟前
大数据-269 实时数仓 - DIM DW ADS 层处理 Scala实现将数据写出HBase等
java·大数据·数据仓库·后端·flink·scala·hbase
是棍子啊1 小时前
微服务之服务治理——Eureka
java·微服务·eureka
程序边界1 小时前
AIGC赋能Java编程:智能工具引领效率、创新与理解的新纪元
java·开发语言·aigc
她和夏天一样热1 小时前
【前端系列】优化axios响应拦截器
java·前端·axios
奈川直子1 小时前
EasyExcel自定义动态下拉框(附加业务对象转换功能)
java·mysql·spring·excel
老马啸西风2 小时前
NLP 中文拼写检测纠正论文-07-NLPTEA-2020中文语法错误诊断共享任务概述
java
好看资源平台2 小时前
Java Web开发基础——Java Web项目的结构与组织
java
->yjy2 小时前
[微服务] - MQ高级
java·微服务·架构