使用flatten-maven-plugin出现问题后引发的maven学习

一、maven的基础学习

      maven的基本知识这里就不过多讲解,详细可以看看这个文章,文章中把idea上maven插件为什么lifecycle和plugins都有同样的操作,以及maven lifecycle每个阶段执行的goals和phrase都列得非常清楚。

      https://blog.csdn.net/qq_40761462/article/details/122995852?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~aggregatepage~first_rank_ecpm_v1~rank_v31_ecpm-1-122995852.pc_agg_new_rank&utm_term=idea%E4%B8%ADmaven%E9%87%8C%E7%9A%84lifecycle%E5%92%8Cplugin&spm=1000.2123.3001.4430

 

二、使用flatten-maven-plugin

     这个插件的使用也不过多解说,主要是用来做maven parent项目的版本以及子模块版本参数化,主要用来修改一处变量,子模块都同步。用法参考该文档:

     https://zhuanlan.zhihu.com/p/270574226

 

三、实战后出现问题

     实际就是使用${revision},替换project下的version,子模块的parent项目也用变量代替。

     使用该插件的时候,却出现一些问题,执行mvn complie具体报错信息如下:

    

     [INFO] --- maven-enforcer-plugin:1.4.1:enforce (enforce) @ sl-saas-member-common ---

    [WARNING] Rule 1: org.apache.maven.plugins.enforcer.RequireNoRepositories failed with message:

     com.shopline.saas:sl-saas-member:pom:${revision}

    看到这个报错信息,下意识的就以为是flatten替换不成功,所以又去查了一下 flatten-maven-plugin的实现原理,其实就是在模块下生成.flattened-pom.xml里面是变量替换为具体版本的pom文件,在编译构建的时候,maven不读pom.xml而去读取.flattened-pom.xml的内容完成构建。

    这时候我就去看每个子模块,发现除了整个project和子模块starter下的pom.xml,有生成.flattened-pom.xml外,其他都没有,就以为是项目结构问题,其他子模块没生成.flattened-pom.xml导致读取的还是原来pom.xml的${revision}。

    这个错误的思路一直让我查不到正确的解决方法,查阅的资料也离正确解决方法越行越远,也捣腾了idea上maven插件下,发现lifecycle和plugins都有一样的操作

    鉴于本人maven基础也不扎实,所以我就去补习了一下maven基础,得知maven构建分了好几个生命阶段,clean -> validate -> compile -> test -> package -> verify -> install -> site -> deploy。

    同时也知道了flatten-maven-plugin配置中的execution,实际上就是在mvn命令构建时,不同生命周期goals实现哪些操作,比如clean的时候也把.flattened-pom.xml删除。

    我就开始一步步执行看看具体是哪一步出现问题,clean完成后,发现在validate阶段就出现报错了,而validate主要是用来做一些校验,仔细一查看报错信息,发现maven-enforcer-plugin:1.4.1这个插件的报错。而这插件一查,发现是用来校验依赖版本是否有冲突的,好像默认就会执行,导致后面阶段,还没执行到flatten-maven-plugin当然就没有.flattened-pom.xml了。

    如何去掉这个插件呢?好像也没什么办法,但能通过maven命令执行的时候进行skip跳过,mvn clean install -DskipTests  -Denforcer.skip=true,这样运行,就成功compile和install还有deploy了。

posted @   klm-kain  阅读(5269)  评论(2编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
点击右上角即可分享
微信分享提示