Maven dependencyManagement 详解
dependencyManagement(以下簡稱:《依賴管理器》)
《依賴管理器》簡介
Maven中的《依賴管理器》元素提供了一種管理依賴版本號的方式。在《依賴管理器》元素中聲明所依賴的jar包的版本號等信息,那么所有子項目再次引入此依賴jar包時則無需顯式的列出版本號。Maven會沿著父子層級向上尋找擁有《依賴管理器》元素的項目,然后使用它指定的版本號。
注意:
《依賴管理器》中的依賴必須明確的指定依賴版本號,不然子模塊引入該依賴后,將繼承父模塊《依賴管理器》中的設置,如果父模塊的《依賴管理器》中沒有設置依賴的版本號, 會導致子模塊無法下載該依賴。
《依賴管理器》作用就是用來統一管理依賴版本號的,所以在父模塊中可以添加所有子模塊需要用到的依賴,然后統一指定版本號。子模塊引入依賴時會繼承父模塊《依賴管理器》中設置的版本號設置。注:《依賴管理器》不會下載它里面配置的依賴。
例外:
上面提到的把所有子模塊需要用到的依賴都添加到父模塊的《依賴管理器》中,但是在SpringBoot工程中要看情況而定,有些由SpringBoot《依賴管理器》管理的依賴就不用添加到父模塊的《依賴管理器》中。
在子模塊中使用到的依賴如果存在SpringBoot《依賴管理器》中,該依賴會直接繼承SpringBoot《依賴管理器》中的依賴版本號設置(其實也是從父模塊繼承而來,父模塊從SpringBoot《依賴管理器》中繼承)。
如果父模塊的《依賴管理器》定義了SpringBoot《依賴管理器》中存在的依賴就會發生覆蓋,此時子模塊也是繼承父模塊《依賴管理器》中的依賴設置了。
結合上面兩條,父模塊沒必要去管理SpringBoot《依賴管理器》已經定義的依賴,因為這樣做是自找苦吃,除非想改變SpringBoot《依賴管理器》依賴的版本號時才去設置。
總結:Maven的繼承關系跟Java一致。
下面展示了在父模塊中的《依賴管理器》不定義依賴版本號帶來的問題,以及依賴的繼承性質,還有通過圖片的方式展示了在SpringBoot工程中為什么父模塊的《依賴管理器》不要去管理SpringBoot《依賴管理器》中存在的依賴。
總結
以上是生活随笔為你收集整理的Maven dependencyManagement 详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQLAlchemy中filter_by
- 下一篇: Hbase简介及常用命令相关知识总结