文章目录

  • 声明
  • 概念
  • 原理
  • 优势
  • 环境搭建
  • 总结

声明

1)该文章学习借鉴于金昊霖大佬的maven详解。

2)博主是萌新上路,文中如有不当之处,请各位大佬指出,共同进步,谢谢。

概念

Maven是Apache下的顶级的开源项目(顶级就是指Apache下的项目都是以此为基础开发的),项目管理工具,管理java项目。

特点:

  • 1、项目对象模型 (Project Object Model)

POM对象模型,每个maven工程中都有一个pom.xml文件,定义工程所依赖的jar包、本工程的坐标、打包运行方式。

  • 2、依赖管理系统(基础核心)

Maven通过坐标对项目工程所依赖的jar包统一规范管理。

  • 3、Maven定义一套项目生命周期

清理、初始化、编译、测试、报告 、打包、部署、站点生成。

  • 4、一组标准集合

强调:maven工程有自己标准的工程目录结构、定义坐标有标准。

  • 5、Maven 管理项目生命周期过程都是基于插件所完成

原理


1)中央仓库
中央仓库,就是远程仓库,全世界只有一个,仓库中jar包由专业团队(Maven团队)统一维护。而它的服务器就在我们的“脚下”,地球的另一端——英国。

2)私服
局域网中的仓库,一般是在公司内部架设一台私服,其它公司架设一台仓库,对外公开。

3)本地仓库
本地的仓库,它会存储你曾经从Maven仓库中获取的所有jar包依赖,相当于缓存。

Maven第一次会从远程仓库(互联网)去下载jar 包,将jar包存在本地仓库(在程序员的电脑上)。第二次会先从本地仓库找,如果找不到才会去远程仓库找。

4)镜像
由于中央仓库服务器离我们太远,再加上访问量大,所以直接重中央仓库下载往往会很慢,甚至下载失败。所以镜像就随之而生,所谓镜像,其实就是中央仓库的复制版,一般选择国内的镜像,这样会使jar下载速率大大提升。比如阿里的镜像仓库。

5)运行机制
当你项目需要添加依赖时,Maven首先会去你的本地仓库找jar包,如果没有则去局域网中的私服仓库找,如果还没有,那就去中央仓库或者镜像中下载(至于去哪个要看你的配置,具体配置后面会讲)。

优势

1)一个项目就是一个工程

如果项目非常庞大,就不适合使用package来划分模块,最好是每一个模块对应一个工程,利于分工协作。

借助于Maven就可以将一个项目拆分成多个工程。

2)项目中使用jar包,需要“复制”、“粘贴”项目的lib中

同样的jar包重复的出现在不同的项目工程中,你需要做不停的复制粘贴的重复工作。

借助于Maven,可以将jar包保存在“仓库”中,不管在哪个项目只要使用引用即可就行。

3)jar包需要的时候每次都要自己准备好或到官网下载

借助于Maven我们可以使用统一的规范方式下载jar包。

4)jar包版本不一致的风险

不同的项目在使用jar包的时候,有可能会导致各个项目的jar包版本不一致,导致未执行错误。

借助于Maven,所有的jar包都放在“仓库”中,所有的项目都使用仓库的一份jar包。

5)一个jar包依赖其他的jar包需要自己手动的加入到项目中

FileUpload组件->IO组件,commons-fileupload-1.3.jar依赖于commons-io-2.0.1.jar。

极大的浪费了我们导入包的时间成本,也极大的增加了学习成本。

借助于Maven,它会自动的将依赖的jar包导入进来。

环境搭建

Mave下载
可以到Maven的官网下载。

个人建议将下载的压缩包解压到IntelliJ IDEA文件夹中的plugins子文件里,以便归类寻找。

该该根目录会有下面的文件夹apache-maven-3.6.3(具体版本看下载的文件)。

本地仓库配置

创建本地仓库

在你想要存储的地方创建文件夹repository表示本地仓库位置。(推荐D盘或者E盘,一般不选C盘)

配置本地仓库

打开Maven的安装目录中conf/ settings.xml文件(以记事本方式打开即可),在这里配置本地仓库:

这里的意思是配置本地仓库的目录为E:\Javarepository。

如果你不想下载jar包太慢或者下载失败的话你最好找到

<mirrors></mirrors>

这个标签,在里面加上

<!-- 阿里云镜像 --><mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/repositories/central/</url> <mirrorOf>central</mirrorOf> </mirror><!-- maven官方镜像 --><mirror><id>mirrorId</id><mirrorOf>central</mirrorOf><name>Human Readable Name </name><url>http://repo1.maven.org/maven2/</url></mirror><!-- junit镜像地址 --><mirror> <id>junit</id> <name>junit Address/</name> <url>http://jcenter.bintray.com/</url> <mirrorOf>central</mirrorOf> </mirror>

如下:

这样我们就可以优先重镜像仓库中下载!

总结

通过金昊霖大佬的博客和讲解,对Maven也有了个初步的认识,在往后的学习生活中也会融会贯通,这里就不写Maven的项目结构了,因为本人也不太了解,大家想要更加详细的了解Maven,请点击maven详解。

人生就是在不断地学习中前进,不气馁于一时的落后,找准目标,选对方向,加油干!古之立大事者,不惟有超世之才,亦必有坚韧不拔之志!以梦为马,不负韶华,岂能尽如人意,但求无愧己心!

Java:初始Maven相关推荐

  1. Java SSM1——Maven

    Java SSM1--Maven 1.下载 maven 官网:https://maven.apache.org/download.cgi maven 百度云:https://pan.baidu.com ...

  2. java 创建ssh用户秘钥,安装Java、Maven、Git,以及生成、拷贝密钥

    安装Java.Maven.Git,以及生成.拷贝密钥. 整个过程可以用root用户操作,但为了使部署脚本对普通用户可用,需要注意调整文件的权限. 这里以10.56.69.165为部署服务器,10.56 ...

  3. YangTools从YANG生成Java类(Maven)

    1.说明 ODL提供了Yang Tools工具从YANG文件生成Java类, 本文介绍使用Maven插件的方式生成, 基于yang-maven-plugin这个插件. 2.创建Maven工程 Ecli ...

  4. Jsonschema2pojo从JSON生成Java类(Maven)

    1.说明 jsonschema2pojo工具可以从JSON Schema(或示例JSON文件)生成Java类型, 并且可以配置生成Jackson 1.x,Jackson 2.x, Moshi 1.x或 ...

  5. 数据库Java项目:在线租房出租房屋系统(java+springboot+maven+mysql)

    数据库Java项目:在线租房出租房屋系统(java+springboot+maven+mysql) 主要实现了客户在线租房及房东发布出租等基本操作流程的全部功能,系统分普通用户.房东.管理员等角色,除 ...

  6. Eclipse 基本 java lombok maven 示例

    在本指南中,我们将了解什么是 Lombok 项目,使用 Eclipse 或 STS 等 IDE设置Lombok ,一个简单的java Lombok maven 示例和Lombok项目的主要功能. 1. ...

  7. IntelliJ IDEA 创建 hello world Java web Maven项目从头到尾都有图有真相2017版本

    IntelliJ IDEA使用教程 (总目录篇) 学Java的大部分吧都是要整Java web开发项目的,那么最好用的编辑器估计就是这个 IntelliJ IDEA,然后现在maven管理项目是很流行 ...

  8. java调用maven接口实现java执行maven命令

    引入maven <!--java操控maven命令--><dependency><groupId>org.apache.maven.shared</group ...

  9. 学习spring boot 第一天:vscode配置Java以及maven环境

    配置系统环境 1.1 安装jdk1.8 "我的电脑"右键→属性→高级系统设置→环境变量 点击"新建",新建系统变量JAVA_HOME,值为JDK安装根目录 D: ...

  10. (精品)ssm Java mysql maven vue健康医疗预约系统(源码+系统+mysql数据库+lw文档)

    下载地址:https://download.csdn.net/download/m0_71595576/85519044 项目介绍: (精品)ssm Java mysql maven vue健康医疗预 ...

最新文章

  1. 移动物联网技术LoRa、SigFox、NB-IoT和eMTC的发展轨迹
  2. 【codeforces 807C】Success Rate
  3. __declspec(dllimport)
  4. 20145318赵一《网络对抗》后门原理与实践
  5. 这17 种方法让 PyTorch 训练速度更快!
  6. 拿下微软、Google、Adobe,印度为何盛产科技圈 CEO?
  7. Java Web学习总结(11)——Session使用示例教程
  8. SqlServer数据库 性能监视器 打开路径、添加监控参数 等详解
  9. hdu 2069 1 5 10 25 50 这几种硬币 一共100个(母函数)
  10. 【java笔记】打印流printStream
  11. [转载] 十种方式拼接Python字符串
  12. 蓝屏代码0x1000007e 错误分析
  13. 实践应用|Python自动化连接FTP批量下载指定文件
  14. Axure授权码,2021年11月11日亲测有效
  15. tp5时间戳转换日期格式
  16. 自己动手——快速搭建Java应用服务器
  17. SQL - 多字段组合升序ASC降序DESC
  18. GDB 调试 Nginx 磨刀不误砍柴工
  19. 路由器组成及路由器发展概述
  20. 我傻眼了:一个完全由 AI 生成的播客,采访了乔布斯

热门文章

  1. LC1665. 完成所有任务的最少初始能量(推公式贪心)
  2. 关于switchport Port-security 使用遇到的一些问题
  3. 通过JS代码实现Ping功能
  4. python画皮卡丘
  5. 计算机概述(四)——计算机的快速发展
  6. CSDN如何获得积分白嫖资源?
  7. 2021年安全生产监管人员及安全生产监管人员模拟试题
  8. 体验管理,猪飞不起来的风口
  9. Java解析Excel 获取文本和图片信息
  10. 我也就是尝试了一下斗图的快乐