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

相关推荐
带刺的坐椅几秒前
Java MCP 的鉴权?好简单的啦
java·鉴权·mcp·solon-ai
Pocker_Spades_A3 分钟前
飞算JavaAI家庭记账系统:从收支记录到财务分析的全流程管理方案
java·开发语言
33255_40857_280598 分钟前
掌握分页艺术:MyBatis与MyBatis-Plus实战指南(10年Java亲授)
java·mybatis
Ashlee_code24 分钟前
香港券商智能櫃台系統技術解決方案——融合跨境清算與AI風控,助力券商把握滬港雙市爆發機遇**
java·科技·金融·重构·架构·系统架构·php
蚰蜒螟35 分钟前
Spring 和 Lettuce 源码分析 Redis 节点状态检查与失败重连的工作原理
java·redis·spring
小张快跑。39 分钟前
Tomcat下载、安装及配置详细教程
java·服务器·tomcat
神仙别闹1 小时前
基于 JSP+Mysql实现MVC房屋租赁系统
java·mysql·mvc
m0_521329031 小时前
java-单元测试
java
墨雨听阁1 小时前
8.18网络编程——基于UDP的TFTP文件传输客户端
网络·网络协议·学习·udp
小晶晶京京1 小时前
day35-负载均衡
运维·网络·网络协议·学习·负载均衡