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左侧的文件栏中,也可以查看当前项目导入的依赖:

相关推荐
Crossoads20 分钟前
【汇编语言】端口 —— 「从端口到时间:一文了解CMOS RAM与汇编指令的交汇」
android·java·汇编·深度学习·网络协议·机器学习·汇编语言
老马啸西风21 分钟前
NLP 中文拼写检测纠正论文-02-2019-SOTA FASPell Chinese Spell Checke github 源码介绍
java
向宇it22 分钟前
【从零开始入门unity游戏开发之——C#篇26】C#面向对象动态多态——接口(Interface)、接口里氏替换原则、密封方法(`sealed` )
java·开发语言·unity·c#·游戏引擎·里氏替换原则
@菜鸟进阶记@25 分钟前
java根据Word模板实现动态填充导出
java·开发语言
卖芒果的潇洒农民27 分钟前
Lecture 6 Isolation & System Call Entry
java·开发语言
Amarantine、沐风倩✨1 小时前
设计一个监控摄像头物联网IOT(webRTC、音视频、文件存储)
java·物联网·音视频·webrtc·html5·视频编解码·七牛云存储
机智的叉烧2 小时前
前沿重器[57] | sigir24:大模型推荐系统的文本ID对齐学习
人工智能·学习·机器学习
路在脚下@2 小时前
spring boot的配置文件属性注入到类的静态属性
java·spring boot·sql
森屿Serien2 小时前
Spring Boot常用注解
java·spring boot·后端
量子-Alex3 小时前
【多模态聚类】用于无标记视频自监督学习的多模态聚类网络
学习·音视频·聚类