美文网首页
mvn控制父pom的版本更新

mvn控制父pom的版本更新

作者: 7d972d5e05e8 | 来源:发表于2021-01-03 01:00 被阅读0次

    背景:
    1、项目通过父pom定义dependencyManagement来进行版本管理,大概有上千个依赖吧~
    2、所有业务工程,都需要依赖父pom获取统一的版本管理
    3、父pom由于管理的依赖太多,且更新非常频繁。导致每次idea进行reimport后,都需要至少1个小时等待,开发效率太低

    怎么解:
    1、为啥我要reimport呢?肯定是需要引入某个依赖的新版本
    2、为啥reimport后,那么慢呢?因为reimport会对父pom进行更新。由于父pom几乎时刻在更新,所以每次reimport几乎都有其他包要重新下载。
    3、我不需要的包,可不可以不用下载。答案是可以的。

    为了避免不需要包的下载,我们就不能更新父pom。为了避免更新父pom,我们修改setting文件。把<snapshots>的updatePolicy修改为never。
    mvn会读父pom下的maven-metadata-xxx.xml,如果没读到回去远程仓库下载。所以,我们必须得保证该文件要有。

    修改完setting后,所有snapshot包,同一个版本都不会再去远程进行比对拉取了。如果我们明确需要某一个包,可以执行:https://www.jianshu.com/p/5f097c3297f2,会单独拉取指定的最新包到本地仓库。

    但是这个时候,虽然你把想要的包拉到本地仓库了,但是idea并不会感知到这个包。所以,需要你执行reimport导入到lib中。

    下面简单说下思路:
    1、修改setting文件,停止snapshot版本自动拉取最新包
    2、修改自己想要更新依赖的版本(包升级不会被第1条影响)
    3、单独拉取指定包,到本地仓库
    4、执行reimport(已经停止snapshot更新,但是要修改的依赖已经被拉取到本地仓库,刚好解决)

    ========================
    最佳实践:
    1、mvn命令和idea的mvn,两个setting分开。mvn命令行的setting可以使用daily,目的是为了下载快一点。
    2、idea的mvn,设置单独的setting。目的是为了让idea直接读取本地仓库,不要去远程拉取了,顺便把依赖import到项目的lib中

    相关文章

      网友评论

          本文标题:mvn控制父pom的版本更新

          本文链接:https://www.haomeiwen.com/subject/xuayoktx.html