Maven基础简介

作者简介: zoro-1,目前大二,正在学习Java,数据结构,spring等

作者主页: zoro-1的主页

欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖

Maven简介

Maven是什么

Maven是一个项目管理工具,用于构建和管理Java项目。它可以自动下载项目依赖的第三方库,并将它们添加到项目的构建路径中。Maven使用XML格式的配置文件来定义项目的依赖关系、构建过程和发布方式。它通过插件系统提供了丰富的功能,如编译、测试、打包、部署等。Maven还提供了一个标准的项目结构和约定,使得多人协作和持续集成更加方便。

Maven可以为我们做什么

Maven是一个Java项目构建工具,它可以帮助我们自动化构建、测试和部署Java项目。下面是Maven可以为我们做的一些事情:

  1. 依赖管理:Maven可以管理项目的依赖库,并自动下载和导入所需的依赖。它可以解决依赖冲突的问题,确保项目构建所需的所有依赖都可用。

  2. 项目构建:Maven提供了一套规范的项目结构和构建生命周期,可以帮助我们快速搭建和构建Java项目。它可以自动编译代码、运行测试、打包应用程序等。

  3. 测试支持:Maven可以集成各种测试框架,如JUnit、TestNG等,并提供了丰富的插件和配置选项来帮助我们编写和运行测试。

  4. 文档生成:Maven可以生成项目的文档,包括JavaDoc和项目报告。这些文档可以帮助我们了解项目的结构和使用方法。

  5. 项目部署:Maven可以帮助我们自动化部署项目。它可以将项目打包成可执行的文件或部署到服务器上。

Maven管理的项目如何下载依赖

第一种:通过远程仓库下载

Maven内置了一个远程仓库(中央仓库)(全球唯一),(简单来说就是一个资源存储仓库,将所有依赖按照一定的),通过配置pom.xml文件能够自动从这个仓库下载依赖。

第二种:通过本地仓库下载

我们idea只要配置过Maven,创建一个Maven项目,就会存在一个本地仓库,每次下载依赖的顺序是先从本地仓库寻找,如果没有就向远程仓库下载到本地仓库,之后再下载这个依赖就可以从本地仓库中找到,缩减了下载时间。

第三种:通过私服下载(企业常用)

什么情况下会通过私服下载,就是企业中自己研发的依赖,涉及商业机密,不想被别的企业看见,通常会有一个私有服务器专门存储这些依赖,得有账户密码,才能登录进去下载。

如何解决依赖冲突问题

通过maven导入的依赖,不仅会导入依赖本身,还会导入依赖所需要的依赖,,这样就有可能导致导入的依赖已经导进去了,很可能相同的依赖版本还不一样,那这时候我们怎么去处理呢,就要用到了一个插件,将我们所有导进去的依赖进行梳理标识哪些依赖是冲突的然后可以让我们看见然后删除不合适的留下合适的,一般删除低版本的,留下高版本的,因为高版本兼容低版本的功能

下载后就显示了一个Dependency Anaiyzer,他上面三个按钮分别是将冲突依赖显示出来,将依赖用列表显示出来,将依赖用树形结构显示出来,右键依赖点击exclude就可以删除

如何配置Maven项目

点击File->settings->在搜索框搜索maven

Maven home path就是下载的Maven地址

User settings file就是Maven的配置文件

Local repository就是maven的本地仓库地址

点击后面的文件夹,都是可以修改地址,建议放在一个空间比较充裕的盘下,并且需要将路径都设置为英文(防止报错),然后将Maven的配置文件路径复制下来搜索找到文件,然后点开将下面的远程仓库改成阿里云,因为没改之前的远程仓库是国外的,下载速度慢,但是我们国内也有很多企业开源了一些镜像仓库。

java 复制代码
<mirror>
      <id>aliMaven</id>
      <name>aliyun maven</name>
      <url>https://maven.aliyun.com/nexus/content/groups/public</url>
      <mirrorOf>central</mirrorOf>
    </mirror>
  </mirrors>
复制代码
                        今天的分享到这里就结束了,谢谢大家的支持
相关推荐
程序员小假27 分钟前
我们来说一下 MySQL 的慢查询日志
java·后端
独自破碎E1 小时前
Java是怎么实现跨平台的?
java·开发语言
To Be Clean Coder1 小时前
【Spring源码】从源码倒看Spring用法(二)
java·后端·spring
xdpcxq10291 小时前
风控场景下超高并发频次计算服务
java·服务器·网络
想用offer打牌1 小时前
你真的懂Thread.currentThread().interrupt()吗?
java·后端·架构
橘色的狸花猫1 小时前
简历与岗位要求相似度分析系统
java·nlp
独自破碎E2 小时前
Leetcode1438绝对值不超过限制的最长连续子数组
java·开发语言·算法
用户91743965392 小时前
Elasticsearch Percolate Query使用优化案例-从2000到500ms
java·大数据·elasticsearch
yaoxin5211232 小时前
279. Java Stream API - Stream 拼接的两种方式:concat() vs flatMap()
java·开发语言
坚持学习前端日记2 小时前
2025年的个人和学习年度总结以及未来期望
java·学习·程序人生·职场和发展·创业创新