引言
开发有依赖的项目
假如你正在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就必须在导入Bjar包。
这两个方法都很麻烦,前者可能造成资源的浪费(比如,开发者可能正在开发依赖B的其它项目,B已经存储到本地了,在导入A的jar包的话,就有了两个B的jar),后者是我们常遇到的,找各种jar包,非常麻烦(有了maven就不一样了)
上面两个问题的描述,其实都属于项目与项目之间依赖的问题人为手动的去解决,很繁琐,也不方便,所以使用maven来帮我们管理
二、maven到底是什么?
Maven是基于项目对象模型(POM project object model),
可以通过一小段描述信息(配置)来管理项目的构建,报告和文档的软件项目管理工具,这种又是大白话,如果没明白maven是什么,那么上面这句话跟没说一样,我自己觉得,Maven的核心功能便是合理叙述项目间的依赖关系,通俗点讲,就是通过pom.xml文件的配置获取jar包,而不用手动去添加jar包
。
怎么通过pom.xml的配置就可以获取到jar包呢?pom.xml配置文件从何而来?等等类似问题我们需要搞清楚:
如果需要使用pom.xml来获取jar包,那么首先该项目就必须为maven项目,maven项目可以这样去想,就是在java项目和web项目的上面包裹了一层maven,本质上java项目还是java项目,web项目还是web项目,但是包裹了maven之后,就可以使用maven提供的一些功能了(通过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项目时都会要求写上这三个属性值的。
- 根据上一段的描述,我们最终的目的就是学会如何在pom.xml中配置获取到我们想要的jar包,在此之前我们就必须了解如何创建maven项目,maven项目的结构是怎样,与普通java,web项目的区别在哪里,还有如何配置pom.xml获取到对应的jar包等等
1、Maven 是干什么的?
Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理
。
Maven 的正确发音是[ˈmevən],而不是“马瘟”以及其他什么瘟
2、Maven 解决了什么痛点?
① 添加第三方 jar 包
手动会出现 jar 包冲突,版本冲突。通过统一的 Maven 仓库我们可以享受到一个完全统一规范的 jar 包管理体系。
② jar 包之间的依赖关系
Maven 可以替我们自动的将当前 jar 包所依赖的其他所有 jar 包全部导入进来,无需人工参与,节约了我们大量的时间和精力。
③ 将项目拆分成多个工程模块
3、Maven 的同类技术
Java世界中主要有三大构建工具 Ant、Maven和Gradle
3.1 Ant(Another Neat Tool)
Ant(Another Neat Tool), 开始主要用来构建著名的 Tomcat ,产生的动机是由于作者 James Duncan Davidson 受不了 Makfile 的语法格式。
3.2 Maven
Maven 的产生,也是由于厌倦了日复一日的手工构建工作,对各个项目风格迥异的构建系统感到麻烦。Maven 的依赖管理以及项目构建规则重用性等特点,让 Maven几乎成为 Java构 建工具的事实标准。
3.3 Gradle
Gradle 作为新的构建工具,基于 Groovy 语言的构建工具,既保持了 Maven 的优点,通过使用 Groovy 定义,克服了 Maven 中使用 XML 繁冗以及不灵活等缺点,它最后被 google 作为了 Android 御用管理工具。
4、工程化与工具
工欲善其事必先利其器,不管是小白,还是资深开发,玩Java技术体系,选择好的工具,提升开发效率和团队协作效率,是必不可少的:
- Maven,项目管理
- Jenkins,持续集成
- Sonar,代码质量管理
- Git,版本管理
参考:https://www.toutiao.com/i6807315663158247950
参考2:https://www.cnblogs.com/whgk/p/7112560.html