Maven最佳實踐之一個好的parent依賴基礎(chǔ)
使用parent 控制依賴版本是很常見的事。
如果你有過控制依賴版本的這種經(jīng)歷,你可能就會遇到過第三方版本之間的沖突,本文不介紹如何解決沖突,但是會提供給你一個基本不存在沖突的基礎(chǔ)依賴。
得益于 Spring ,尤其是 Spring Boot 對第三方集成提供的 starter。Spring Boot 對可能用到的第三方依賴提供了很好的版本控制,我們就依靠 Spring 提供的 bom 和 dependencies 來實現(xiàn)我們自己的基礎(chǔ)依賴。
由于 Spring Boot 2.0 正式版還沒有發(fā)布,這里提供的是 Spring 4.x 最新版本的依賴,這兩個依賴分別如下:
Spring Framework (Bill Of Materials) » 4.3.12.RELEASE
Spring Boot Dependencies » 1.5.8.RELEASE
上圖只顯示部分依賴
這兩個依賴搭配的時候,可以通過上面第一個確定你要選擇的 Spring 版本,然后去 Spring Boot 這個依賴中選擇和 Spring 版本對應(yīng)的版本(Spring Boot 中有對 spring-core 的依賴)。上面這兩個版本就是目前(2017-11-05)最新的版本。
依據(jù)這兩個依賴,我們創(chuàng)建一個基礎(chǔ)的依賴如下:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>tk.mybatis</groupId> <artifactId>spring-dependencies</artifactId> <packaging>pom</packaging> <version>4.3.12.RELEASE</version> <name>基礎(chǔ)依賴版本管理</name> <properties> <springframework.version>4.3.12.RELEASE</springframework.version> <springboot.version>1.5.8.RELEASE</springboot.version> </properties> <dependencyManagement> <dependencies> <!-- 統(tǒng)一管理Spring依賴 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-framework-bom</artifactId> <version>${springframework.version}</version> <type>pom</type> <scope>import</scope> </dependency> <!--通過Spring Boot管理其他第三方版本--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>${springboot.version}</version> <type>pom</type> <scope>import</scope> </dependency> <!--其他--> </dependencies> </dependencyManagement> </project>
注意兩個依賴都是添加在 dependencyManagement 中,并且指定 <type>pom</type> 和 <scope>import</scope>,import 是 <scope> 中最特別的一個類型,這個類型只能用于這種情況。
同時要注意這兩個依賴的順序,越靠前面優(yōu)先級越高。
如果你查看上面pom.xml 文件最終生成的 effective-pom,就會發(fā)現(xiàn)這是一個有 3000 多行的文件,這里面幾乎包含了常見的各種依賴,少數(shù)不包含在內(nèi)再額外添加即可。
除了上面的配置外,一個基礎(chǔ)的 pom 還可以在增加一些常見插件的配置。下面是一個簡單的示例。
<build> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build>
指定編譯時的 JDK 版本是非常有必要的,尤其是在使用 IDEA 的情況下,這樣可以避免 IDEA 選擇 1.5 作為默認值的一些編譯錯誤。由于不同環(huán)境使用的插件不太相同,所以這里只是一個示例,不需要按照這種方式使用。更合理的用法可能是創(chuàng)建一個插件的基礎(chǔ) pom(plugin-pom),然后在上面的的 pom 中設(shè)置 parent 為 plugin-pom,這樣能滿足更多情況下的選擇。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
相關(guān)文章
JAVA中HTTP基本認證(Basic Authentication)實現(xiàn)
HTTP 基本認證是一種簡單的認證方法,本文主要介紹了JAVA中HTTP基本認證(Basic Authentication),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-07-07Java判斷范圍型的數(shù)據(jù)是否存在重疊的方法
遇到了個問題,同一天可以輸入多個時間段,但是每個時間段的時間不能出現(xiàn)重疊,這不就是判斷數(shù)據(jù)返回是否有重疊的變種嗎,所以本文給大家介紹了Java判斷范圍型的數(shù)據(jù)是否存在重疊的方法,需要的朋友可以參考下2024-07-07Java語言實現(xiàn)對MySql數(shù)據(jù)庫中數(shù)據(jù)的增刪改查操作的代碼
這篇文章主要介紹了Java語言實現(xiàn)對MySql數(shù)據(jù)庫中數(shù)據(jù)的增刪改查操作的代碼,實現(xiàn)了連接數(shù)據(jù)庫,和數(shù)據(jù)庫的增刪改查操作,有興趣的可以了解一下。2016-12-12Spring中@PathVariable和@RequestParam注解的用法區(qū)別
這篇文章主要介紹了Spring中@PathVariable和@RequestParam注解的用法區(qū)別,@PathVariable 是 Spring 框架中的一個注解,用于將 URL 中的變量綁定到方法的參數(shù)上,它通常用于處理 RESTful 風(fēng)格的請求,從 URL 中提取參數(shù)值,并將其傳遞給方法進行處理,需要的朋友可以參考下2024-01-01