当前位置: 首页 > article >正文

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文件夹,主要用于存放配置文件和静态资源。

例如之前学习的MyBatis的配置文件就可以放在resources文件夹内

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

我们来看看这个pom.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节点:

<dependencies>
   //里面填写所有的依赖     
</dependencies>

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

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

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

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

将代码复制到dependencies中即可

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

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

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

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

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


http://www.kler.cn/a/381856.html

相关文章:

  • Python OCR 文字识别
  • 在跨平台开发环境中构建高效的C++项目:从基础到最佳实践20241225
  • Node Version Manager (nvm) -管理不同版本的 Node.js
  • 大型语言模型(LLMs)演化树 Large Language Models
  • 直流有刷电机多环控制(PID闭环死区和积分分离)
  • dns一般设置为多少
  • Unity 中使用 WebGL 构建并运行时使用的图片必须使用web服务器上的
  • [论文阅读]Label-Only Membership Inference Attacks
  • vue2中使用vue-awesome-swiper实现轮播
  • C#里计算SHA256,主要用来做文件校验
  • Java基础-集合
  • 【Python基础】零基础快速入门Python(下)
  • 计算机视觉算法:从图像处理到智能识别
  • Antd Vue中使用table组件把相同名称的合并单元格---只需两步
  • 前端js处理list(数组)
  • Vue 3 性能提升与 Vue 2 的比较 - 2024最新版前端秋招面试短期突击面试题【100道】
  • 常见的 Raid 类型
  • uniapp 使用vue/pwa
  • 智能语音机器人智能在哪里?AI人工智能电话机器人部署
  • HiveSQL 中判断字段是否包含某个值的方法
  • gitee 使用 webhoot 触发 Jenkins 自动构建
  • Linux(CentOS)安装 JDK
  • AiFace 1.1| AI换脸软件,一键替换,完全免费,无需注册登录
  • Vue3 -- 新组件【谁学谁真香系列6】
  • Maven 插件
  • PHP查询实时股票行情