最近maven遇到的問(wèn)題

最近一段時(shí)間僵闯,項(xiàng)目要做一些升級(jí)居触,首先weblogic要從11g升到12c,除了安裝新的weblogic之外少漆,還要更新jdk的版本尸疆,從1.6更新到1.8椿猎。然后是依賴(lài)framework的版本,因?yàn)橹耙恢睕](méi)有更新寿弱,所以要從9.x.x升到12.x.x犯眠。將toplink換成eclipselink。最后maven的依賴(lài)倉(cāng)庫(kù)也有變化症革,從上海的artifactory到hk的筐咧。下面就是我做這些改動(dòng)遇到的問(wèn)題

1.沒(méi)有清空本地倉(cāng)庫(kù)

在更新完一些基本配置后重新import依賴(lài)發(fā)現(xiàn)新的倉(cāng)庫(kù)缺失的jar并不多,然而這只是一個(gè)假象噪矛。在本地的repository中還有從原來(lái)artifactory下載下來(lái)的jar包量蕊,而maven在本地package的時(shí)候先找本地倉(cāng)庫(kù),所以即使遠(yuǎn)程倉(cāng)庫(kù)仲有很多jar沒(méi)有艇挨,在本地還是可以通過(guò)的残炮。所以在更換遠(yuǎn)程倉(cāng)庫(kù)的時(shí)候一定要注意,先清空本地的repository缩滨。另外還有一點(diǎn)就是setting.xml的設(shè)置吉殃,遠(yuǎn)程倉(cāng)庫(kù)的地址就是在這里更新辞居,值得注意的是要將其他的repository設(shè)置成enable為FALSE。

2.導(dǎo)入本地依賴(lài)

因?yàn)閾Q了新的artifactory蛋勺,所以很多依賴(lài)在新的倉(cāng)庫(kù)中都沒(méi)有。并且還有就是要上傳新的jar到新的倉(cāng)庫(kù)需要提供很多信息鸠删,并且要經(jīng)過(guò)審核(起碼兩天)才能用抱完,而經(jīng)過(guò)排查,項(xiàng)目有幾十個(gè)jar是新的倉(cāng)庫(kù)沒(méi)有的刃泡,所以這是一個(gè)大工程巧娱。另外還有一點(diǎn)就是要去看每個(gè)依賴(lài)的licence,當(dāng)然這是必須的烘贴,但是這也是短時(shí)無(wú)法解決的事情禁添。所以我決定先把需要的jar放在項(xiàng)目中,引用項(xiàng)目中的依賴(lài)先在測(cè)試環(huán)境上測(cè)試桨踪,再進(jìn)行之后的工作老翘。

醉出我的想法是兩步走。第一步將jar包放在本地的lib文件夾中锻离,然后在pom中將相關(guān)的dependency設(shè)置成本地引用:

……

<scope>system</scope>

<systempath>……</systempath>

這里的system就是標(biāo)明我要使用本地依賴(lài)铺峭。

因?yàn)檫@種方式在使用maven-dependency-plugin的copy-dependency的時(shí)候是不會(huì)拷貝的,所以我試圖使用相同插件的copy的goal將本地依賴(lài)copy到要打包的jar文件夾下汽纠。

然而第二步這種方法并不奏效卫键,因?yàn)樵赾opy的時(shí)候,它并不知道我要copy的是本地的jar虱朵,所以第一時(shí)間是去repository中去找莉炉,但是它并找不到這個(gè)jar,所以無(wú)法完成copy碴犬。

于是我又想了另一個(gè)辦法絮宁,因?yàn)橹暗捻?xiàng)目是通過(guò)編寫(xiě)ant腳本來(lái)實(shí)現(xiàn)很多文件搬運(yùn)的工作的,而maven本身有maven-antrun-plugin插件翅敌,可以使用他的簡(jiǎn)單配置完成文件的搬運(yùn)工作羞福。

好像還有另外一種方式可以實(shí)現(xiàn)依賴(lài)本地的jar,需要配置一個(gè)本地的repository蚯涮,在配置的目錄下放置要依賴(lài)的jar包治专。但是值得注意的是,這里面要嚴(yán)格按照groupid/artifactid/version/….jar的目錄來(lái)存放文件遭顶。

當(dāng)然在這個(gè)部分我還犯了另一個(gè)錯(cuò)誤张峰,因?yàn)檫@種方式本地的jar是要push到項(xiàng)目的repository上面的,但是之前的項(xiàng)目并不需要棒旗,所以之前的gitignore中將jar類(lèi)型文件忽略了喘批,導(dǎo)致jar并沒(méi)有上傳上去撩荣。所以在build jenkins的時(shí)候報(bào)出在特定目錄下找不到依賴(lài)jar的錯(cuò)誤。

3.解決依賴(lài)沖突

更新后的項(xiàng)目依賴(lài)可能來(lái)自新的遠(yuǎn)程倉(cāng)庫(kù)饶深,因?yàn)閭}(cāng)庫(kù)是新的餐曹,有的版本的依賴(lài)沒(méi)有,所以也會(huì)更新一些版本信息敌厘,然后沒(méi)有的依賴(lài)要用本地的jar台猴,資源來(lái)自不同地方,版本也有更新俱两,所以就可能有依賴(lài)的沖突饱狂。

最開(kāi)始我采取的方式是和過(guò)于已經(jīng)能夠成功deploy的ear 用beyoundcompare進(jìn)行比較,一個(gè)是觀察有沒(méi)有缺失的jar宪彩,然后就是看有沒(méi)有多出來(lái)的重復(fù)的不同版本的jar休讳。一旦發(fā)現(xiàn)存在重復(fù)的jar,用maven的dependency:tree命令觀察重復(fù)的依賴(lài)是如何產(chǎn)生的尿孔,之后將它exclude掉俊柔。但是當(dāng)我做完這個(gè)工作之后,發(fā)現(xiàn)deploy的時(shí)候還是存在依賴(lài)沖突纳猫,所以發(fā)現(xiàn)這個(gè)做法很笨且無(wú)效婆咸,應(yīng)該存在某種maven命令能夠直接檢測(cè)依賴(lài)沖突,果然這種命令式存在的芜辕,如下:

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

這樣可以直接生成依賴(lài)樹(shù)尚骄,并且會(huì)標(biāo)記依賴(lài)沖突,通過(guò)search “omitted for conflict with”可以看到?jīng)_突的jar侵续,然后將他們exclude就可以了倔丈。

還遇到一種情況很奇怪,就是exclude了沖突的jar之后發(fā)現(xiàn)編譯不過(guò)了状蜗,明明依賴(lài)了更新版本的jar需五,于是我在打包的時(shí)候?qū)⑺苯觘xclude掉了,在deploy的時(shí)候也沒(méi)有出現(xiàn)問(wèn)題轧坎。


雖然花了很長(zhǎng)時(shí)間才成功jenkins build成功宏邮,但是還是收獲了很多知識(shí)和處理問(wèn)題的思路。以后再遇到類(lèi)似的情況就能更好的應(yīng)對(duì)了缸血。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蜜氨,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子捎泻,更是在濱河造成了極大的恐慌飒炎,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件笆豁,死亡現(xiàn)場(chǎng)離奇詭異郎汪,居然都是意外死亡赤赊,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)煞赢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)抛计,“玉大人,你說(shuō)我怎么就攤上這事耕驰∫瑁” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵朦肘,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我双饥,道長(zhǎng)媒抠,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任咏花,我火速辦了婚禮趴生,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘昏翰。我一直安慰自己苍匆,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布棚菊。 她就那樣靜靜地躺著浸踩,像睡著了一般。 火紅的嫁衣襯著肌膚如雪统求。 梳的紋絲不亂的頭發(fā)上检碗,一...
    開(kāi)封第一講書(shū)人閱讀 49,111評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音码邻,去河邊找鬼折剃。 笑死,一個(gè)胖子當(dāng)著我的面吹牛像屋,可吹牛的內(nèi)容都是我干的怕犁。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼己莺,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼奏甫!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起篇恒,我...
    開(kāi)封第一講書(shū)人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤扶檐,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后胁艰,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體款筑,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡智蝠,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了奈梳。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片杈湾。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖攘须,靈堂內(nèi)的尸體忽然破棺而出漆撞,到底是詐尸還是另有隱情,我是刑警寧澤于宙,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布浮驳,位于F島的核電站,受9級(jí)特大地震影響捞魁,放射性物質(zhì)發(fā)生泄漏至会。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一谱俭、第九天 我趴在偏房一處隱蔽的房頂上張望奉件。 院中可真熱鬧,春花似錦昆著、人聲如沸县貌。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)煤痕。三九已至,卻和暖如春征候,著一層夾襖步出監(jiān)牢的瞬間杭攻,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工疤坝, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留兆解,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓跑揉,卻偏偏與公主長(zhǎng)得像锅睛,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子历谍,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 最近一段時(shí)間现拒,項(xiàng)目要做一些升級(jí),首先weblogic要從11g升到12c望侈,除了安裝新的weblogic之外印蔬,還要更...
    吉祥如意酥閱讀 253評(píng)論 0 0
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)脱衙,斷路器侥猬,智...
    卡卡羅2017閱讀 134,600評(píng)論 18 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,748評(píng)論 6 342
  • 簡(jiǎn)介 概述 Maven 是一個(gè)項(xiàng)目管理和整合工具 Maven 為開(kāi)發(fā)者提供了一套完整的構(gòu)建生命周期框架 Maven...
    閩越布衣閱讀 4,277評(píng)論 6 39
  • 我今年20歲了 2017年的五月 一個(gè)關(guān)于成長(zhǎng)的課題 這本該是十八歲以前該完成的 遲到了兩年 還好不算太晚 從承認(rèn)...
    路丹閱讀 188評(píng)論 0 0