maven的几种依赖范围 查看/优化依赖的maven命令有哪些

作者&投稿:海药 (若有异议请与网页底部的电邮联系)
maven传递依赖的版本确定规则,也就是对重复的间接依赖的包的选择规则:

1. 在工程的依赖树上,深度越浅,越被优先选择。如本例中的spring-jms. 由于pom中直接声明了3.0.2版本的spring-jms,所以3.0.2版本的spring-jms在工程的依赖树上处在第一层,而activemq-optional所间接依赖的3.0.3版本的spring-jms则是处在工程依赖树的第二层,则maven会以深度浅者优先,所以最后解析的结果是选择了3.0.2版本的spring-jms。

2. 若两个依赖包处于依赖树上的同一层,则谁在前,选择谁。如本例中的spring-core.一个是activemq-optional的间接依赖,一个是spring-context的间接依赖,两个依赖都是处在第二层上,但由于是activemq-optional声明在前,所以maven优先选择了activemq-optional所依赖的3.0.3的版本!
3. 避免传递依赖引起版本问题的最佳实践。现在很多的开源框架和工具都开始分模块打包发布,比如spring,hibernate都是如此,而这些模块之间又有可能存在相关的依赖关系,为了避免出现版本不一致问题,比如上例中出现的spring-jms使用的是3.0.2,而spring-core却使用了3.0.3这种情况,需要我们对一个工程直接依赖的某一框架的多个模块都要做出声明,而不要依赖其内部的依赖关系来间接引入。总结起来就昌:一般来说,如果工程直接依赖到某一框架的多个模块,最好全部声明这些依赖。
Part two:

compile (编译范围)
compile是默认的范围;如果没有提供一个范围,那该依赖的范围就是编译范围(包括编译,测试,运行,打包都能用)。编译范围依赖在所有的classpath 中可用,同时它们也会被打包。
provided (已提供范围)
provided 依赖只有在当JDK 或者一个容器已提供该依赖之后才使用(编译,测试可用)。例如,如果你开发了一个web 应用,你可能在编译 classpath 中需要可用的Servlet API 来编译一个servlet,但是你不会想要在打包好的WAR 中包含这个Servlet API;这个Servlet API JAR 由你的应用服务器或者servlet 容器提供。已提供范围的依赖在编译classpath (不是运行时)可用。它们不是传递性的,也不会被打包。
runtime (运行时范围)
runtime 依赖在运行和测试系统的时候需要(运行时才可用),但在编译的时候不需要。比如,你可能在编译的时候只需要JDBC API JAR,而只有在运行的时候才需要JDBC
驱动实现。
test (测试范围)
test范围依赖在一般的编译和运行时都不需要,它们只有在测试编译和测试运行阶段可用。
system (系统范围)
system范围依赖与provided 类似,但是你必须显式的提供一个对于本地系统中JAR 文件的路径。这么做是为了允许基于本地对象编译,而这些对象是系统类库的一部分。这样的构件应该是一直可用的,Maven 也不会在仓库中去寻找它。如果你将一个依赖范围设置成系统范围,你必须同时提供一个systemPath 元素。注意该范围是不推荐使用的(你应该一直尽量去从公共或定制的 Maven 仓库中引用依赖)。

maven 中声明了systempath的依赖其依赖范围只能为system吗~


javabuilder
javabuilder
1.0
system
${project.basedir}/src/main/webapp/WEB-INF/lib/javabuilder.jar

像这样把包拷到项目里面,然后指定到项目下面就可以了。

依赖类型
Maven会用到的依赖基本就是5种,compile,test,provided,runtime,system
1.compile:编译依赖范围,默认使用该范围。编译、测试、运行都有效
2.test:测试依赖范围。支队测试的classpath有效。例如Junit,greenMail。
3.provided:对编译和测试有效,对运行无效,常用于容器提供了的运行环境。例如servlet-api,容器以提供,所以只需要编译和测试有效即可。
4.runtime:运行时依赖范围。例如jdbc驱动,编译和测试并不需要,只需要使用JDK提供的JDBC接口即可。
5.system:系统依赖范围,依赖Maven仓库意外的依赖。

精神分裂症的早期症状是什么样的?
答:2.情感障碍:表现为情感活动范围的狭窄,严重者可以达到淡漠的地步。还表现为情感反应不适,即情感活动与当时的思维内容和处境不协调,这是很重要的症状,这种"不协调"就是精神活动"分裂"的表现之一。3.矛盾症状:在精神活动中同时出现两种相反的倾向称为矛盾症状。Bleuler认为差不多所有的精神分裂症患者...

什么是精神分裂症?
答:(二)高级神经活动症理生理学假说 巴甫洛夫学派认为精神分裂症症状是产生于大脑皮质慢性催眠状态的基础上的,不同部位、范围、程度的抑制过程可导致不同的精神症状,当抑制过程波及皮质下情感反射弧时,则出现情感淡漠和迟钝。并用大脑皮质的病理隋性兴奋灶与负诱导来妄想的坚信不疑和缺乏批判力。(三)免疫学假说 认为...

如何正确减肥
答:4、食物尽量做到多样化,不要总是吃你喜欢吃的那几样食物。如果一天能吃到10种食物以上更好,食物种类越多越好,只有这样吃,你每天才能够摄取得到比较充足的营养素,才能帮助身体制造足够的酶,代谢身体多余的脂肪,你才容易瘦下来。但是尽量吃新鲜天然的,不要经过深加工的。比如说新鲜的蔬菜水果肉类,...

奶酪的钙含量是牛奶的几倍
答:1952年,Milkana百吉福诞生于阿尔卑斯山麓,是Savencia集团旗下的国际品牌,时至今日,百吉福奶酪已经在零售、餐饮以及工业等渠道销售着十几个系列、五十多个品种的产品。中国奶业历史悠久,源远流长。虽然全世界无法确认第一次制作奶酪是在什么时候、什么地点。但是,2014年,在中国新疆罗布泊小河墓地,中外...

你好,我有一怪毛病,就是只要身后有人我就会条件反射样的放P,十几年...
答:从现有资料看,这种疾病是一种遗传性疾病,生物的,心理的,社会的和环境的因素,在外部环境的发病率有一定的影响。部分病人有脑的形态和发生的变化。 1,根据专家的意见进行调查,发现下一个患者的亲属的患病率比一般人群高出几倍的病人,更亲密的关系,更高的预期精神分裂症的发病率。双胞胎寄养儿童的调查结果也是一致...

侠盗车手罪恶都市里几种武器
答:IAVENJQ = 一拳把人打飞 KANGAROO = 让你跳起来,很高很高 主题: AFPHULTL = 忍著主题 【可用】 PRIEBJ = 性商品主题 【可用】 其他: LFGMHAL = 百万跳跃,跳的更高 BEKKNQV = 吸引很多的妓女 LLQPFBN = 所有车变粉红色 IOWDLAC = 所有车变黑色 VKYPQCF = 所有计程车都加了推进剂和可跳舞 BGKGTJ...

侠盗猎车圣安地列斯攻略
答:要救治的范围变小了。任务变超简单!! 完成12级奖励:生命值增多 3 警车 传统任务。由警用交通工具启动(摩托,警车,吉普车,FBI吉普,HUNTER)。共12级。逐级增加目标。可以拉上几个帮派成员来帮你做DRIVE-BY。或者利用下面这个BUG: 用警车(必须是车!)进行任务。开到可进入的建筑门口(快餐店,衣服店等)。启动任务,...

精神分裂的表现 ?
答:常见的表现有:精神萎靡,自诉头痛头昏,失眠心烦。谈话时往往前言不搭后语,有头无尾,支离破碎,或欲言不止,或百问不答,或喜欢使用自己创造的新词、新字、使人费解。.活泼好动的青少年,逐渐变得孤僻离群、生活懒散,对外部事物不感兴趣,注意力涣散,不专心听课、学习成绩下降,或是常发呆发愣,或...

侠盗飞车5(圣地斯安列)作弊代码
答:圣安地列斯范围比以前的Vice City大上五六倍,在这里你可以找到各式风格不同的景观,事实上你将其称为一个微缩的世界亦不为过。 《圣安德列斯》中会有大量的交通工具(从自行车一直到飞机,这已经是GTA的招牌啦)供玩家选择。不过在使用某种交通工具前,我们的主角C.J必须考取相应的执照才行。 游戏中的战斗要比以前...

请告诉我几个圣地安列斯的秘籍
答:一进村便看到一种像牛又像马的奇怪牲畜,站在一旁的老爷爷柯文介绍说,这是村长挈斯用特殊方法培育出来的一种狗,可以替人耕种,挈斯对村子的贡献非常大,然而说到挈斯的儿媳妇则似乎有难言之隐。继续往前向路边的几个村人打听,得知昂汀湖畔有邪灵出没,另外还听说在村外硫磺坑前有一处温泉,那里有个叫哈默的人爱...