新聞中心
本文轉(zhuǎn)載自微信公眾號(hào)「小姐姐味道」,作者小姐姐養(yǎng)的狗 。轉(zhuǎn)載本文請(qǐng)聯(lián)系小姐姐味道公眾號(hào)。

使用start.spring.io生成項(xiàng)目,會(huì)發(fā)現(xiàn)里面有mvnw和mvnw.cmd兩個(gè)文件。兩個(gè)文件加起來(lái)有20多kb。
我代碼還沒(méi)超過(guò)20行呢,就整上這樣兩個(gè)文件,做什么用呢?到底是什么鬼?
官方說(shuō),它是maven的一個(gè)wrapper,在找不到maven的時(shí)候,它會(huì)自動(dòng)下載一個(gè);或者,碰到你的項(xiàng)目maven和你環(huán)境里的mavne不兼容,它也會(huì)自動(dòng)下載一個(gè)。
這不是在搞笑么?不知道我現(xiàn)在身處局域網(wǎng)深處么?
我們嘗試執(zhí)行一下傳統(tǒng)的mvn命令,可以看到它使用mvnw去替換了自己。
- ~/codes/ $ mvn -Dmaven.test.skip=true -Pdev package
- executing mvnw instead of mvn
- Exception in thread "main" java.util.zip.ZipException: error in opening zip file
- at java.util.zip.ZipFile.open(Native Method)
- at java.util.zip.ZipFile.
(ZipFile.java:225) - at java.util.zip.ZipFile.
(ZipFile.java:155) - at java.util.zip.ZipFile.
(ZipFile.java:169) - at org.apache.maven.wrapper.Installer.unzip(Installer.java:169)
- at org.apache.maven.wrapper.Installer.createDist(Installer.java:86)
- at org.apache.maven.wrapper.WrapperExecutor.execute(WrapperExecutor.java:121)
- at org.apache.maven.wrapper.MavenWrapperMain.main(MavenWrapperMain.java:61)
但是但是,等了良久,日志也沒(méi)有向下滾動(dòng)。等了十幾分鐘,好不容易有輸出了,結(jié)果報(bào)錯(cuò)。然后接下來(lái)每次運(yùn)行都報(bào)錯(cuò)。
聒噪的很,是時(shí)候要讓它露出真面目了。
使用ps命令,找到了它的啟動(dòng)參數(shù)。這才發(fā)現(xiàn),除了mvnw文件,它還偷偷的在項(xiàng)目中放了.mvn目錄,好家伙,足足有64kb。
- # ps -ef| grep mvn
- java -classpath ~/codes/.mvn/wrapper/maven-wrapper.jar -Dmaven.home=~/codes -Dmaven.multiModuleProjectDirectory=~/codes org.apache.maven.wrapper.MavenWrapperMain -Dmaven.test.skip=true -Pdev package
這可真是多此一舉,不如不舉。你要是貼心,直接塞個(gè)apache maven在里面啊。
深處國(guó)內(nèi),對(duì)付這玩意最好的方式,那就是:
刪掉它!
刪掉它!
刪掉它!
即使它的初衷如何好,目標(biāo)是如何宏大,還是要毫不留情的干掉它。
曾經(jīng)有個(gè)小弟,使用mvnw下載了一下午的jar包,最后茫然的向我吐槽:公司的maven私服太慢了。
不能背這個(gè)鍋。
一個(gè)好的項(xiàng)目,不會(huì)依賴特定的打包工具。這算是maven項(xiàng)目偷懶出的插件,因?yàn)橐粋€(gè)基礎(chǔ)工具,有一個(gè)點(diǎn)必須要做到,那就是向后兼容。
搞出這么個(gè)工具,連個(gè)CDN都舍不得弄,這不是方便開(kāi)發(fā)人員,而是給開(kāi)發(fā)人員添亂。
更要命的是,企業(yè)內(nèi)部都是自己搭建maven私服的,有自己的配置文件和賬號(hào)。使用這個(gè)玩意,還得需要知道m(xù)aven下載在哪了,找到以后替換它的配置文件。典型的管生不管養(yǎng)啊。
當(dāng)然了,gradle也是一個(gè)德行。
所以,xjjdog的處理方式是,看到mvnw和.mvn這些文件,第一時(shí)間就毫不留情的干掉它。
雖然我很殘忍,辜負(fù)了作者的一片好心。但深處這樣的網(wǎng)絡(luò)環(huán)境之中,我也是無(wú)奈之舉啊。
作者簡(jiǎn)介:小姐姐味道 (xjjdog),一個(gè)不允許程序員走彎路的公眾號(hào)。聚焦基礎(chǔ)架構(gòu)和Linux。十年架構(gòu),日百億流量,與你探討高并發(fā)世界,給你不一樣的味道。我的個(gè)人微信xjjdog0,歡迎添加好友,進(jìn)一步交流。
網(wǎng)頁(yè)標(biāo)題:Mvnw,到底是什么鬼?
本文來(lái)源:http://m.5511xx.com/article/djhcohs.html


咨詢
建站咨詢
