Maven配置与部署技巧,手把手教你搞定项目构建

阿木 发布于 8 小时前 5 次阅读


我真服了,昨晚搞到凌晨。

明明是按照教程一步步去做的,PATH也进行了配置,/etc/profile也执行了source操作,可是mvn -v却总是报那个JAVA_HOME不正确。后来经过一番查找才发现,JDK21不存在JRE文件夹,而mvn.cmd这个脚本它很愚蠢啊它居然不认识。

前往maven安装场所的bin区域之内,以右键点击mvn.cmd,而后进行编辑操作。

转变至最上方,强行塞入一行,内容为 set JAVA_HOME=C:Program FilesJavajdk - 21。

保存,再敲 mvn -v

那个瞬间看到版本号刷出来,像憋了三个小时的尿终于找到厕所。

为啥非要折腾这个?

其实Eclipse自带了Maven,但你懂的,它那个版本。

就像是酒店里一次性牙刷,能刷,但刷不干净 。

版本低得不行,插件兼容器全是些让人头疼的问题,有时明明依赖就在中央仓库,可它却偏偏说找不到,气得简直想把鼠标给摔了。

所以我必须在/usr/local/下面塞一个3.8.8。

解压,复制,改环境变量。

/etc/profile 这个文件,在进行修改着的时候,总是会让人感觉好似正处于做手术的状态,一旦要是敲错了哪怕仅仅一个字母,那么该系统无法正常启动进而就会导致事情变糟糕了。

maven 的配置文件在哪里找?

$MAVEN_HOME/conf/settings.xml 这里面的,是全局的。

用户级在 ~/.m2/settings.xml

后者优先级更高 。

我建议你配用户级的。

由于公司所配备的电脑,倘若哪一天有其他人将你整个局面的内容进行了更改,当你对项目进行一次打包操作时,呈现出来的全部都是红叉。

还有,改之前记得备份。

我头一回进行学习之际,将settings.xml书写得满是语法方面不对之处,maven全然停止运作,在那瞬间真的特别想要转换行当去送外卖。

现在养成的毛病:

将设置文件,复制为备份文件,把设置文件,命名为设置备份文件。

——这行命令打出来,心里才踏实。

怎么让下载速度嗖嗖的?

阿里云镜像,yyds。

以前从中央仓库拉一个spring-core,四分钟。

配完镜像,四秒。

那种感觉怎么形容呢。

如同往昔于火车之上等待泡面那个水烧开,随后乘坐了高铁,饮料瓶盖尚未拧开之时就已然到达站点了。

配置代码我也懒得背,每次都翻收藏夹:


    aliyunmaven
    central
    阿里云公共仓库
    https://maven.aliyun.com/repository/public

放进去,保存。

从此告别“Downloading…”时的心跳加速。

IDEA里为什么又要配一遍?

这个问题我室友问过我。

他觉得既然电脑都认得mvn命令了,IDEA就应该自动认啊。

不是的。

IDEA是IDEA,系统是系统。

它们是两个世界的人,需要有人介绍才能认识 。

那么,你务必处在 File -> Settings -> Build, Execution, Deployment -> Build Tools -> Maven 的设置当中:

路径为Maven的家,选择会自己选择已解压的文件夹里带有3.1和8.8的那个文件夹。

用户设置文件,将覆盖选项勾选上,选择刚才修改好的设置文件.xml。

本地存储库:它能够自行读取配置文件之中的路径,无需进行操作。

不做这一步,你配置一整晚的阿里云镜像,在IDEA那看来就如同不存在似的。

关于那些命令,我一直记混

clean

将target文件夹予以删除,如果代码有时候会在毫无缘由的情况下出现报错现象,那就进行clean操作,如此一来,世界便归于安静状态了。

compile

.java变.class。

如果只想检查语法错误,用这个最快 。

test

跑单元测试。但我经常偷懒。

mvn package,通过-DskipTests这个参数来实行相关操作,此操作的目的是跳过测试,不过却要编译测试代码。

mvn 打包,通过设置 -Dmaven.test.skip=true 来实现,这意味着会彻底跳过,连测试代码都不会进行编译。

第二种比较暴力,我一般周五下午用。

package

打成jar或war。

它与install之间存在着怎样的区别呢,对此我先前记了之后又忘却了,忘却之后又再次去记,如此这般循环往复历经了三四年的时间。

后来一个老哥说人话讲给我听:

封装:告知你“已进行打包装束,放置于你项目的目标位置之中了”。

进行安装操作,将其进行打包处理,然后放置一份到你电脑的本地仓库之中,向电脑传达“老子这个安装包不要删除,因为别的某个项目会用到它”这样一条信息。

deploy

这是公司里用的。发到私服,别人才能拉。

昨天遇到个奇怪的错

Provider模块已经完成编译,然而Consumer模块却始终咬定找不到相关依赖,怎么都不行。

明明在同一个父pom下,父pom里也写了module。

后来去查,发现是:

Consumer对Provider存在依赖,然而Provider尚未进行install。

本地的仓库当中,压根就不存在Provider的jar,Consumer自然是寻觅不到的。

在到达Provider目录之后,执行mvn clean install。

然后Consumer那边就通了。

这种问题特别傻,但几乎每个月都会犯一次。

大概,这便是我与Maven的一种彼此之间的相处模式了,它,对我进行了千百次的虐待,而我,却始终像对待初恋那般,对待着它。

其实Maven挺温柔的

刚开始学的时候,觉得这家伙规矩真多。

项目的目录结构是不可以随意变动的,groupId必不可少,artifactId绝对不能缺少也不能有误改,version同样一个都不能少,而且有时候哪怕只是一个标签的顺序出现了错误,整个项目就会呈现出错报红的状况。

可随后项目数量增多了,存在的依赖也变多了,十几个模块之间相互进行调用,依靠手动方式去管理jar包,那简直会让人崩溃的。

版本冲突、依赖传递、传递过来的版本又冲突……

那种时候你会发现,Maven脾气虽然臭,但它不乱来。

它逼你守规矩,最后其实是保护你。

好了,又扯远了。

之前要记得先去备份settings.xml,然后再去配置镜像,最后借助mvn -v进行验证一下。

如果JAVA_HOME报错,试试我刚才说的那个笨办法。

晚安。

写代码的人不应该熬夜。