概述
关注我,每天三分钟,轻松掌握一个Java知识点。
很多人提到maven,都会认为它是一个jar包管理工具,在项目中统一整个工程使用到哪些jar包,都用什么版本,这种说法很对但不全面,maven还有很多功能大家没有用到或者用到了也不自知,今天就来给大家缕一缕manven得功能点。
一、maven到底能干那些事呢?
- 依赖管理
就是大家常说的jar包管理,在不使用maven的项目中,大家会把引用的jar包放到工程的lib,整个工作流程是这样的:开发中需要用到某个jar包,去对应的官网下载,放到本工程中,add到功能引用中,最后在代码中使用。
这样做存在几个问题,一是找jar包比较麻烦,java封装的功能包有很多,全世界大佬们重复造了很多轮子,我们在开发过程中还要满世界去找这些jar包很耗费精力时间。二是一个项目可能拆分成多个功能模块,每个模块都要重复的去沾这些jar包,极大的浪费了磁盘,而且包之间的版本管理会陷入混乱,不同项目间的交流也会变的困难。
maven是如何解决上述问题的呢?它构建了一个maven世界,囊括了大部分开源的jar包,它把这些jar包都叫做构件,maven通过坐标这一概念唯一标示一个构件,并建立一个中央仓库管理这些构件,现在我们想要某个jar包,只要告诉maven它的坐标即可,maven会自己给你送过来。
至于第二个问题,maven通过聚合与继承,实现了多项目间,通过maven进行关联,统一使用一套jar包,这样就解决了jar包重复和版本混乱的问题了。当然聚合和继承更多的是为了构建方便,也就是我们接下来要说的。
2.构建工具
这样一个场景大家可能很熟悉:早上来了,先从Git或者SVN上把代码更新下,然后编译调试,如果出错了还要找相关模块的开发同事去调试问题,更新提交,再开始开发自己的模块,然后写测试代码,跑单元测试,继续改。
然后就是打包发测试环境,测试人员测出bug,进bug管理工具,你继续更新代码,构建复现bug,修改跑单元测试,打包发布测试。这一天很多时间都不是在真正的开发代码上,而是花在编译、跑单元测试、打包和部署上,这就是构建。
maven能把大家从这些繁琐的工作中解救出来,只要在maven中配置好项目,只要一个mvn clean install,轻松搞定整个流程。maven依赖其强大的插件,从清理、编译、测试、打包和发布,全都自动搞定,而且这些流程都是可自定义配置的,灵活度极高。
二、maven的一些概念
1.manve坐标的概念。
maven坐标就是项目在maven中央仓库中的唯一标示。
坐标元素包括:
<artifactId>定义当期maven隶属的实际项目(可能会包含很多模块)artifactId>
<groupId>模块groupId>
<version>版本version>
<packaging>打包方式packaging>
<classifier>附属构建(不能直接定义)classifier>
我们在pom文件中使用这些标签,就能在manve世界中唯一标示我们的项目。
2.依赖的概念。
依赖可以简单理解为我们要依赖的jar包。
<dependencies>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
<version>${springboot.version}version>
<type>type>
<scope>scope>
<optional>optional>
<exclusions>
<exclusion>
exclusion>
exclusions>
dependency>
前三个之前讲过了,就是坐标。这个也是最重要的,有了这个,manven才能在仓库中找到对应的依赖。
type就是依赖的类型,这个一般情况就不用声明了,默认是jar。
scope依赖的范围,值包括:compile、test、provided、runtime、system、import。这里不做赘述了,想了解的同学可以自行探索他们之间的区别。
optional是标记依赖是否可选。
exclusion是排除传递性依赖。这个日常中可能为用到,因为maven依赖具有传递性,这就导致依赖链中可能会存在我们想要自己声明的依赖却被maven隐式的引用进来了,这个时候我们就可以通过这个标签来剔除它,自己定义这个依赖。
说到依赖的传递性,这里有个点需要大家记忆,就是依赖调解。比如项目中有这样一个依赖关系:A->B->C->D、A->E->D都依赖D的情况下,maven会选择哪个呢?
答案是第二个,因为mavne有一个叫路径最近原则。那要是路径都一样呢?那就是选择最先声明的,这个原则可以帮助我们在项目中合理的调整依赖来解决问题。
以上就是今天的知识点,各位小伙伴get到吗?创作不易,望各位多多点赞收藏,有什么建议可以留言告诉我,我会积极采纳!
最后
以上就是幸福冬日为你收集整理的maven 测试环境 排除 jar_「Java三分钟」Maven的二三事的全部内容,希望文章能够帮你解决maven 测试环境 排除 jar_「Java三分钟」Maven的二三事所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复