很多人說現(xiàn)在開一個(gè)項(xiàng)目都用maven了.
呃, 說得maven多么好, 多么自動(dòng)化.
其實(shí)這個(gè)免費(fèi)軟件雖然功能好, 但是設(shè)計(jì)bug一大堆好嗎.
為什么愣是沒人承認(rèn)這件事?
坑一: 去哪找你要的jar包?
一般會(huì)告訴你第一次上一個(gè)國(guó)外的網(wǎng)站上去搜就行了.
于是就去了.
可用倉(cāng)庫(kù)網(wǎng)址:
http://search.maven.org/#browse
http://mvnrepository.com/
http://repository.sonatype.org/index.html#welcome
http://www.mvnbrowser.com/
視頻教程里面用的第一個(gè)啊.
結(jié)果搜Junit出來幾十個(gè)junit有木有.
視頻里面那家伙說他靠經(jīng)驗(yàn)來選哪一個(gè).
太坑了. 要不就是他不行, 要不就是他有意坑人.
結(jié)果我上網(wǎng)一搜, 用了第二個(gè)網(wǎng)址, Junit出來只有三個(gè)項(xiàng)目, 每一個(gè)還帶說明有木有!!! 還靠什么經(jīng)驗(yàn)來選, 怒!
坑二: 解決jar包沖突的工具自己jar包沖突
都說Maven是用來解決jar包沖突的.
我太特地去搞了本『Maven實(shí)戰(zhàn)』這本書來學(xué)習(xí).
整本書下來就jar包版本沖突這件事情避開不講.
我就不信你開發(fā)過程中沒遇到過.
里面就講了『因?yàn)槟承┰颉贿@樣含糊的字眼教大家解決.
其實(shí)原因就是A.jar引用了C-1.0.jar, 但是后面B.jar要用的是C-2.0. 但是因?yàn)榕渲玫臅r(shí)候A.jar寫在前面, 它自動(dòng)就將B.jar的C的依賴忽視掉了. 最簡(jiǎn)單的解決辦法就是將B.jar的導(dǎo)入寫在前面.
官方的做法就是在配置pom.xml中添加忽略語句. 這里就不寫了.
據(jù)說這個(gè)問題gradle(另一個(gè)布署工具)有比較好的解決方式.
坑三: Maven默認(rèn)用java1.5的版本
在idea中使用maven創(chuàng)建webapp, 默認(rèn)是使用language level是1.5. 需要進(jìn)入Project Structure ->Models -> source -> language level 改.
坑四: 與idea結(jié)合出現(xiàn)編譯版本輸出版本不一致問題
tomcat+springMVC+maven, 在Make的時(shí)候出現(xiàn)以下提示:
源發(fā)行版 1.8 需要目標(biāo)發(fā)行版 1.8
解決方案:
在idea的setting -> java compiler -> Target bytecode version 改為 1.8
坑五: idea無法加載項(xiàng)目目錄原型 顯示 loading archetype list...
原因: jvm最大可用內(nèi)存太小, 但是不知道和maven什么關(guān)系
