Spring MVC 学习——maven 到底是个啥玩意~

我记得在搞懂maven之前看了几次重复的maven的教学视频。不知道是自己悟性太低还是怎么滴,就是搞不清楚,现在弄清楚了,基本上入门了。写该篇博文,就是为了帮助那些和我一样对于maven迷迷糊糊的人。有福了,看完基本上你就会发现原来这么简单。 

参考博文:通俗理解maven

一、简单的小问题

解释之前,提个小问题。

1.1、假如你正在 Eclipse 下开发两个 Java 项目,姑且把它们称为 A、B,其中 A 项目中的一些功能依赖于 B 项目中的某些类,那么如何维系这种依赖关系的呢?

很简单,这不就是跟我们之前写程序时一样吗,需要用哪个项目中的哪些类,也就是用别人写好了的功能代码,导入 jar 包即可。所以这里也如此,可以将 B 项目打成 jar 包,然后在 A 项目的 Library 下导入 B 的 jar 文件,这样,A 项目就可以调用 B 项目中的某些类了。但是这样做几种缺陷:

如果在开发过程中,发现 B 中的 bug,则必须将 B 项目修改好,并重新将 B 打包并对 A 项目进行重编译操作,在完成 A 项目的开发后,为了保证 A 的正常运行,就需要依赖 B (就像在使用某个 jar 包时必须依赖另外一个 jar 包一样)。

两种解决方案,第一种,选择将 B 打包入 A 中,第二种,将 B 也发布出去,等别人需要用 A 时,告诉开发者,想要用 A 就必须在导入 B 的 jar 包。两个都很麻烦,前者可能造成资源的浪费(比如,开发者可能正在开发依赖 B 的其它项目,B 已经存储到本地了,在导入 A 的 jar 包的话,就有了两个 B 的 jar),后者是我们常遇到的,找各种 jar 包,非常麻烦(有了 maven 就不一样了)

1.2、我们开发一个项目,或者做一个小 demo,比如用 SSH 框架,那么我们就必须将 SSH 框架所用的几十个依赖的 jar 包依次找出来并手动导入,超级繁琐。 

上面两个问题的描述,其实都属于项目与项目之间依赖的问题,人为手动的去解决,很繁琐,也不方便,所以使用 maven 来帮我们管理。

 

二、maven到底是什么?

Maven是基于项目对象模型(POM project object model),可以通过一小段描述信息(配置)来管理项目的构建,报告和文档的软件项目管理工具[百度百科]

这种又是大白话,如果没明白 maven 是什么,那么上面这句话跟没说一样,我自己觉得,Maven 的核心功能便是合理叙述项目间的依赖关系,通俗点讲,就是通过 pom.xml 文件的配置获取jar包,而不用手动去添加 jar 包,而这里 pom.xml 文件对于学了一点 maven 的人来说,就有些熟悉了,怎么通过 pom.xml 的配置就可以获取到jar包呢?pom.xml配置文件从何而来?等等类似问题我们需要搞清楚,如果需要使用 pom.xml 来获取 jar 包,那么首先该项目就必须为 maven 项目,maven 项目可以这样去想,就是在 java 项目和 web 项目的上面包裹了一层 maven,本质上 java 项目还是 java 项目,web 项目还是 web 项目,但是包裹了 maven 之后,就可以使用 maven 提供的一些功能了(通过 pom.xml 添加 jar 包)。

所以,根据上一段的描述,我们最终的目的就是学会如何在 pom.xml 中配置获取到我们想要的 jar 包,在此之前我们就必须了解如何配置 pom.xml 获取到对应的 jar 包,这里以 pom.xml 获取 junit 的 jar 包为例。

为什么通过 groupId、artifactId、version 三个属性就能定位一个 jar 包?

假如上面的 pom.xml 文件属于 A 项目,那么A项目肯定是一个 maven 项目,通过上面这三个属性能够找到 junit 对应版本的 jar 包,那么 junit 项目肯定也是一个 maven 项目,junit 的 maven 项目中的 pom.xml 文件就会有三个标识符,比如像下图这样,然后别的 maven 项目就能通过这三个属性来找到 junit 项目的 jar 包了。所以,在每个创建的 maven 项目时都会要求写上这三个属性值的。

 

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值