专栏名称: 脚本之家
脚本之家(jb51.net)是国内专业的网站建设资源、脚本编程学习类网站,以后将为大家分享更多有用的信息,希望大家多多支持宣传。
目录
相关文章推荐
BioArt  ·  Science | ... ·  6 小时前  
生物探索  ·  会议速递 | ... ·  2 天前  
BioArt  ·  Cancer Cell | Eric ... ·  2 天前  
滴滴代驾服务订阅平台  ·  卓然而立,自在绽放:滴滴代驾妇女节关怀活动温暖落地 ·  2 天前  
51好读  ›  专栏  ›  脚本之家

mvnw,到底是什么鬼?

脚本之家  · 公众号  ·  · 2020-09-27 17:00

正文

关注 脚本之家 ,与百万开发者在一起

不羡鸳鸯不羡仙,一行代码调半天。原创:小姐姐味道(微信公众号ID:xjjdog)。

使用 start.spring.io 生成项目,会发现里面有 mvnw mvnw.cmd 两个文件。两个文件加起来有20多kb。

我代码还没超过20行呢,就整上这样两个文件,做什么用呢?到底是什么鬼?

官方说,它是 maven 的一个 wrapper ,在找不到maven的时候,它会自动下载一个;或者,碰到你的项目maven和你环境里的mavne不兼容,它也会自动下载一个。

这不是在搞笑么?不知道我现在身处局域网深处么?

我们尝试执行一下传统的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)

但是但是,等了良久,日志也没有向下滚动。等了十几分钟,好不容易有输出了,结果报错。然后接下来每次运行都报错。

聒噪的很,是时候要让它露出真面目了。

使用 ps 命令,找到了它的启动参数。这才发现,除了 mvnw 文件,它还偷偷的在项目中放了 .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

这可真是多此一举,不如不举。你要是贴心,直接塞个 apache maven 在里面啊。

深处国内,对付这玩意最好的方式,那就是:

删掉它!
删掉它!
删掉它!

即使它的初衷如何好,目标是如何宏大,还是要毫不留情的干掉它。

曾经有个小弟,使用mvnw下载了一下午的jar包,最后茫然的向我吐槽:公司的maven私服太慢了。

不能背这个锅。

一个好的项目,不会依赖特定的打包工具。这算是maven项目偷懒出的插件,因为一个基础工具,有一个点必须要做到,那就是向后兼容。

搞出这么个工具,连个CDN都舍不得弄,这不是方便开发人员,而是给开发人员添乱。

更要命的是,企业内部都是自己搭建maven私服的,有自己的配置文件和账号。使用这个玩意,还得需要知道maven下载在哪了,找到以后替换它的配置文件。典型的管生不管养啊。

当然了, gradle 也是一个德行。

所以,xjjdog的处理方式是,看到 mvnw .mvn 这些文件,第一时间就毫不留情的干掉它。

虽然我很残忍,辜负了作者的一片好心。但深处这样的网络环境之中,我也是无奈之举啊。

推荐阅读:

Windows XP源码泄露






请到「今天看啥」查看全文