Java学习路线:Maven(一)认识Maven

目录

认识Maven

新建Maven文件

导入依赖


认识Maven

Maven是一个Java的项目管理工具,通过Maven,我们可以实现:

  • 项目自动构建,包括代码的编译、测试、打包、安装等
  • 依赖管理,快速完成依赖的导入

在学习Maven之前,我们导入依赖都需要先下载jar包,而且还有可能一个jar包依赖另一个jar包,就十分麻烦,因此需要一个更加方便的包管理机制

新建Maven文件

在IDEA中自带了Maven环境,就不需要再安装了

直接点击新建项目,选择Maven,就可以新建一个maven项目了

Maven项目的结构如图:

可以看到,src下有两个文件夹,分别为Java和test,一般来说我们直接在Java文件夹中编写代码,test文件夹用于测试

在java文件夹内,还有一个resource文件夹,主要用于存放配置文件和静态资源

此外,还有pom.xml文件,是用于Maven的配置

我们来看看这个pom.xml文件里有什么内容:

XML 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>HelloMaven</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

</project>
  • Project表示这是一个Maven项目
  • modelVersion说明了项目的版本
  • groupId、artifactID、version这三个元素合在一起,用于唯一区分每一个项目

如果别人将我们的代码作为依赖,就需要用这三个元素定位这个项目,称为一个项目的基本坐标

每个项目都有自己的Maven坐标,因此我们通过Maven导入其他依赖的时候只需要填写这三个基本元素就可以了,无需再下载Jar文件

其中,

  • groupId 一般用于指定组的名称,命名规则和包名一致

  • artifactId 一般用于指定项目在当前组中的唯一名称,用于区分其他项目

  • version 表示当前项目的版本,在项目开发的过程中,版本会不断的更新

  • properties中一般是一些变量和选项的配置,无需修改

导入依赖

在Maven中如何导入依赖呢?

首先创建一个dependencies节点:

XML 复制代码
<dependencies>
   //里面填写所有的依赖     
</dependencies>

创建好节点后,就可以在节点中添加依赖了

那么,如何知道每个依赖的坐标呢?

可以在Maven Repository: Search/Browse/Explore中查询

假如,我们这里想要导入LomBok依赖:

将代码复制到dependencies中即可

注意,刚复制进去的时候代码可能会爆红,这是刷新一下maven仓库就好(idea右边菜单栏的m就是Maven仓库)

为什么通过坐标就可以定位依赖呢?

Maven项目依赖的管理流程如下:

几乎所有的依赖都被放进了中央仓库中,少量依赖存储在其他远程仓库(私服),从远程仓库下载后,依赖会暂时存储在本地仓库。本地仓库的地址在 C:\Users\用户名\.m文件夹下,这个文件夹中我们可以查看到现在本地有的所有依赖

在idea左侧的文件栏中,也可以查看当前项目导入的依赖:

相关推荐
猿来入此小猿几秒前
基于SSM实现的健身房系统功能实现十六
java·毕业设计·ssm·毕业源码·免费学习·猿来入此·健身平台
ll77881113 分钟前
C++学习之路,从0到精通的征途:继承
开发语言·数据结构·c++·学习·算法
goTsHgo37 分钟前
Spring Boot 自动装配原理详解
java·spring boot
卑微的Coder1 小时前
JMeter同步定时器 模拟多用户并发访问场景
java·jmeter·压力测试
pjx9871 小时前
微服务的“导航系统”:使用Spring Cloud Eureka实现服务注册与发现
java·spring cloud·微服务·eureka
LuckyLay1 小时前
React百日学习计划——Deepseek版
前端·学习·react.js
多多*2 小时前
算法竞赛相关 Java 二分模版
java·开发语言·数据结构·数据库·sql·算法·oracle
爱喝酸奶的桃酥2 小时前
MYSQL数据库集群高可用和数据监控平台
java·数据库·mysql
安和昂2 小时前
【iOS】SDWebImage源码学习
学习·ios
菜一头包2 小时前
c++ std库中的文件操作学习笔记
c++·笔记·学习