又踩 Maven 的两个坑
Maven用了这么多年,没想到还有债没还,真是活久见啊。。。
今天想在某个项目上启用mvnw,接连遇到几个问题,觉得还是有必要记录一下。
1、安装mvnw时报错:Unknown lifecycle phase
mvnw是Maven Wrapper的缩写,主要是保证让某个项目使用指定的maven版本,并且不影响其他的项目。Github地址:https://github.com/takari/maven-wrapper
从官方文档或者其他技术博客上,我查到的安装命令都是这样的:
但是,当我打开Windows Ternimal执行时,却收获到错误:Unknown lifecycle phase ".5.4". You must specify a valid lifecycle phase or a goal in the format
我想mvnw不至于这么差劲,开源项目基本都在用啊,想起mvn似乎有个毛病,PowerShell下不能执行的命令换CMD就OK,于是就开了个命令行窗口来执行,果然就行了。
技术债一: PowerShell下用单引号,可以把参数传给mvn,所以这样写可以执行:
单引号括住的字符串会被精确地传递到命令,其中包含的任何表达式都不会被计算,只是原样传递。
2、命令行里执行mvn时,Maven的配置(settings.xml)没生效?
mvnw安装好后,试试用mvnw代替mvn来执行一些操作:
没有报错,但是,怎么刷刷刷的提示信息中都是在下载jar包,并且不是从阿里云的加速上下载的,而是从maven的官方库在下载?
ctrl+c中断执行,然后加一个指定settings.xml的参数:
OK了,没有再去下载依赖包,但是每次要加这么个参数,也太麻烦了!能不能全局生效呢?
答案是可以的,就是我欠的技术债二:将全局settings.xml复制到%HOMEPATH%\.m2目录下,这样在命令行(cmd)或者PowerShell中执行mvn命令时,就会跟IDE中的maven是一样的配置,避免重复下载jar包。
Maven的配置文件(settings.xml)默认是在安装目录%MAVEN_HOME%\conf下,这是一个全局配置。用户的个性化配置存放位置是:%HOMEPATH%\.m2\settings.xml,默认情况下不会自动创建。当两者都存在,它们的内容将被合并,并且用户的个性化配置占主导地位。
版权声明: 本文为 InfoQ 作者【xiaoboey】的原创文章。
原文链接:【http://xie.infoq.cn/article/cecc02c7bc85d06b68cfd2c2d】。文章转载请联系作者。
评论