有关 Ecliplse下的maven环境的使用问题

一  Ecliplse很奇怪,找各个项目的dependency依赖的资源(其他项目或相关模块)的时候  Ecliplse环境会先找Ecliplse IDE环境下的源码部分当做首要依赖资源,如果各项目块互相依赖的资源源码有问题且在Ecliplse IDE环境下已经加载了那么要先处理这些源码的自身的错误问题,比如构建路径问题等,源代码报错问题等,这样这些被依赖的源码问题不报错了,依赖他们的项目也就不会报错了

二 maven依赖的优先级是  当Ecliplse下没有加载被依赖的项目或模块的源代码时, maven环境才将到本地maven库的install内容目录中去找相关依赖的jar,若IDE已经加载了被依赖项目的源码时,首先Ecliplse  IDE先会去找 IDE是否加载了被依赖模块的源码,有源码的时候Ecliplse就不会去本地maven库中去寻找依赖模块jar了,直接依赖模块源码了(Ecliplse依赖就近原则,很懒,就是优先依赖Eclipse下的项目源码,源码不存在才会找本地maven仓库(local repository),本地maven库(local repository)中不存在所以依赖的jar包则会到远程nexus上下载该依赖jar包),(若Ecliplse加载了源码项目则依赖源码,此时若被依赖的源码报错,则依赖他们的项目也会报错,这个时候必须顺藤摸瓜,先处理被依赖项目的报错问题,被依赖项目源码的报错问题被解决了,依赖他们的那些项目由于连带引起的报错问题自然就好了,若Ecliplse IDE没有加载被依赖项目的源码那么,maven依赖机制将被激活,首先maven环境先会寻找本地os 上的maven本地库(local repository) 去寻找 Ecliplse所打开项目的依赖模块,若存在则maven会加载相关依赖模块到Ecliplse项目下,若本地maven库(local repository)不存在打开项目所依赖的jar模块,则maven环境会试图向远程nexus库服务器发出请求去下载相关依赖模块到本地maven库,若nexus上存在所依赖的模块jar则,会下载并存放至本地maven库(local repository),当下载再编译Ecliplse所打开的项目源码时,maven构建该打开项目时候会优先加载本地库(local repository)该已经下载并安装install好的依赖jar包了,(local repository)没有相关依赖资源才会到远程nexus上去取,若远程nexus上也没有,maven本地库中也没有install过该依赖的jar,则就看ecliplse ide是否加载了所依赖模块的原代码了,若所依赖的项目的源代码也没有,maven本地库也没有,nexus服务器上也下载不到该依赖模块到maven本地库(local repository)上的话,那么项目必然报错因为依赖的模块资源无从获得,项目编译会报错,记住两个原则第一Eclipse下若有所依赖项目的源码的话即使本地maven local repository下没有其所对应的install  的jar包,那么你把该被依赖项目源码用mvn  install命令打一下就会将该被依赖的源码项目打包的jar安装到本地maven  local repository下了供依赖他的其他项目所使用了,所以有了最新版的被依赖项目源码你就无敌了,不行就install下这个项目的最新版本源码你的本地maven local repository中就会有其对应的jar供其他依赖他的项目所使用了

三:有时候你的项目所依赖的其他jar包在maven local repository中已经存在的但是并不是在线最新版本的,这个时候你就需要 选中待编写的主调项目然后用eclisple的 maven->update maven project了并选中force update snapshort/relase功能选项强制更新下载其所依赖(dependency)的资源模块jar才行,但是有时候当你的 本地maven local repository中的已存在的相关依赖资源并不会再次更新即force update失灵,即使用force update snapshort/relase选项也不更新,此时只能将该(被依赖的旧版本 jar包等相关资源文件夹)其删除(将依赖的jar包等文件夹资源从maven本地local 库下删除重新从nexus上下载更新),并重新让maven环境从nexus服务器上下载相关所依赖资源项了(在maven本地local repository上删除相关依赖项资源)然后刷新项目或利用maven->update maven project重新从远处nexus服务器上下载相关依赖项,若新下载下来的依赖项还是不好用,则将不好使的依赖项从本地maven local repository下再次删除,再利用 git下载gitLab上的该被依赖项项目的最新版本源码,然后利用mvn -install命令将其打包成本地maven local repository中的可用的依赖资源,供你本地ecliplse IDE 上依赖它的项目所使用,记住:有了依赖项的最新版本源码其实你就可以自力更生install它到本地maven local repositroy库中供你的开发环境下依赖它的项目所使用,你就拥有了你所需要的一切了,有了依赖项目的源码你可以将其install到本地 maven local repository 仓库上,你就拥有了一切你想所需要的依赖项了,nexus服务器上提供不了给你的依赖资源的时候考虑从gitlab上下载被依赖项的最新版本源代码,将该源代码打包并install到你自己的本地maven库上,你的本地maven库上的该依赖资源将是最新版本的!因为gitlab上你下载的通常是最新版本源码,用最新版本源码install出来的东西通常都是最新版本的jar包了,记住install前可以考虑删除该要install的项目所对应的在本地 maven仓库下的旧jar包,因为本地仓库中已有同名jar包等资源会导致你install失灵或者上传不到(阻止上传至)本地maven local repository上,所以先在maven local repository上删除原来旧的jar包,然后利用install命令打(安装)一个新的到本地maven local repository上比较稳妥

注意:force update snapshort/relase选项

四:记住我们的项目在用jenkins构建的时候通常会将相关构建的项目从gitlab上牵出,并利用jenkins服务器上的 mvn package 打包一个最终产物并install到本地os上(jenkins所在os  上)的maven local repository 上同时再又deploy到了目标nexus服务器上了,这些都是由jenkins环境上预设的执行的相关脚本指令来自动完成的,开发人员不必关心,都是由运维人员预设的一些自动化脚本指令,并配置让 Jenkins自动调用执行的,即最终产物会deploy到目标 nexus上的你不必担心

记住原则:能从nexus上下载最新的依赖资源就从nexus上下载,nexus上下载失灵覆盖不了到本地maven 库(maven local repository)上的依赖项时,就考虑在本地(maven local repository)删除无用的旧版本依赖项,重新利用update maven project

命令从nexus 上再重新下载一遍,如果下载下来的资源也是旧版本的jar ,那么再次从本地maven库local repository上删除它(该新下载下来的旧版本不好用的依赖jar包),然后那么就考虑从gitlab  上下载该依赖项目的最新版本源码,自己利用mvn -package命令打包一遍得出新的产物,并install到本地 maven local repository上,你就能用利用该最新版源码来新打包出来的已经install到本地maven库上的最新依赖项了,依赖它的项目就拥有了该最新依赖项目资源jar包了,因为你从git上获得的被依赖项目源码被打包后,已经install 到本地maven local repository上去了供依赖它的在Eclipse中打开的主调项目去使用了,因为你的Eclipse 环境已经绑定到本地 maven环境的local repository库上了,(注意你的Eclipse环境要和你的本地maven环境极其local repoistory库配置邦定,这是用该Eclipse打开的源码项目可以依赖并引用该本地maven库中的可依赖模块项的前提,这样Eclipse才能利用本地maven环境和local repository来帮你编译你的开发的主调java项目)该本地maven local repository对应你的Eclipse环境来说是可见的该本地maven库,该本地maven 库上的所有可依赖的项目模块资源对于你的Eclipse上打开的主调源码项目均可引用,因为你Eclipse环境和你的maven本地环境已经被绑定可见性配置了,这是Eclipse 中的maven插件能够使用你的maven环境的前提

猜你喜欢

转载自blog.csdn.net/zy103118/article/details/84307070