最近maven遇到的问题

最近一段时间,项目要做一些升级,首先weblogic要从11g升到12c,除了安装新的weblogic之外,还要更新jdk的版本,从1.6更新到1.8。然后是依赖framework的版本,因为之前一直没有更新,所以要从9.x.x升到12.x.x。将toplink换成eclipselink。最后maven的依赖仓库也有变化,从上海的artifactory到hk的。下面就是我做这些改动遇到的问题

1.没有清空本地仓库

在更新完一些基本配置后重新import依赖发现新的仓库缺失的jar并不多,然而这只是一个假象。在本地的repository中还有从原来artifactory下载下来的jar包,而maven在本地package的时候先找本地仓库,所以即使远程仓库仲有很多jar没有,在本地还是可以通过的。所以在更换远程仓库的时候一定要注意,先清空本地的repository。另外还有一点就是setting.xml的设置,远程仓库的地址就是在这里更新,值得注意的是要将其他的repository设置成enable为FALSE。

2.导入本地依赖

因为换了新的artifactory,所以很多依赖在新的仓库中都没有。并且还有就是要上传新的jar到新的仓库需要提供很多信息,并且要经过审核(起码两天)才能用,而经过排查,项目有几十个jar是新的仓库没有的,所以这是一个大工程。另外还有一点就是要去看每个依赖的licence,当然这是必须的,但是这也是短时无法解决的事情。所以我决定先把需要的jar放在项目中,引用项目中的依赖先在测试环境上测试,再进行之后的工作。

醉出我的想法是两步走。第一步将jar包放在本地的lib文件夹中,然后在pom中将相关的dependency设置成本地引用:

……

<scope>system</scope>

<systempath>……</systempath>

这里的system就是标明我要使用本地依赖。

因为这种方式在使用maven-dependency-plugin的copy-dependency的时候是不会拷贝的,所以我试图使用相同插件的copy的goal将本地依赖copy到要打包的jar文件夹下。

然而第二步这种方法并不奏效,因为在copy的时候,它并不知道我要copy的是本地的jar,所以第一时间是去repository中去找,但是它并找不到这个jar,所以无法完成copy。

于是我又想了另一个办法,因为之前的项目是通过编写ant脚本来实现很多文件搬运的工作的,而maven本身有maven-antrun-plugin插件,可以使用他的简单配置完成文件的搬运工作。

好像还有另外一种方式可以实现依赖本地的jar,需要配置一个本地的repository,在配置的目录下放置要依赖的jar包。但是值得注意的是,这里面要严格按照groupid/artifactid/version/….jar的目录来存放文件。

当然在这个部分我还犯了另一个错误,因为这种方式本地的jar是要push到项目的repository上面的,但是之前的项目并不需要,所以之前的gitignore中将jar类型文件忽略了,导致jar并没有上传上去。所以在build jenkins的时候报出在特定目录下找不到依赖jar的错误。

3.解决依赖冲突

更新后的项目依赖可能来自新的远程仓库,因为仓库是新的,有的版本的依赖没有,所以也会更新一些版本信息,然后没有的依赖要用本地的jar,资源来自不同地方,版本也有更新,所以就可能有依赖的冲突。

最开始我采取的方式是和过于已经能够成功deploy的ear 用beyoundcompare进行比较,一个是观察有没有缺失的jar,然后就是看有没有多出来的重复的不同版本的jar。一旦发现存在重复的jar,用maven的dependency:tree命令观察重复的依赖是如何产生的,之后将它exclude掉。但是当我做完这个工作之后,发现deploy的时候还是存在依赖冲突,所以发现这个做法很笨且无效,应该存在某种maven命令能够直接检测依赖冲突,果然这种命令式存在的,如下:

mvn -X compile dependency:tree -Dverbose >a.log

这样可以直接生成依赖树,并且会标记依赖冲突,通过search “omitted for conflict with”可以看到冲突的jar,然后将他们exclude就可以了。

还遇到一种情况很奇怪,就是exclude了冲突的jar之后发现编译不过了,明明依赖了更新版本的jar,于是我在打包的时候将它直接exclude掉了,在deploy的时候也没有出现问题。


虽然花了很长时间才成功jenkins build成功,但是还是收获了很多知识和处理问题的思路。以后再遇到类似的情况就能更好的应对了。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349

推荐阅读更多精彩内容

  • 最近一段时间,项目要做一些升级,首先weblogic要从11g升到12c,除了安装新的weblogic之外,还要更...
    吉祥如意酥阅读 324评论 0 0
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,633评论 18 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,778评论 6 342
  • 简介 概述 Maven 是一个项目管理和整合工具 Maven 为开发者提供了一套完整的构建生命周期框架 Maven...
    闽越布衣阅读 4,279评论 6 39
  • 下午休息之际,随风让一个钻石段位的朋友带小妖精去打高端局,跟随风一起,要让小妖精慢慢适应高端局的节奏,首先因为钻石...
    随风巨帅阅读 242评论 0 0