使用flatten

您所在的位置:网站首页 替换xml不编译 使用flatten

使用flatten

2024-07-13 06:44| 来源: 网络整理| 查看: 265

一、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了。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3