maven中配置項目的jdk版本無效的排查方式
maven配置項目的jdk版本無效排查
最近在配置項目的jdk的時候發(fā)現(xiàn)在pom.xml中配置的1.8版本無效,maven更新后就變成了1.7的jdk。
下面是我pom.xml文件中的配置
?? ?<build> ?? ??? ?<plugins> ?? ??? ??? ?<plugin> ?? ??? ??? ??? ?<groupId>org.springframework.boot</groupId> ?? ??? ??? ??? ?<artifactId>spring-boot-maven-plugin</artifactId> ?? ??? ??? ??? ?<configuration> ?? ??? ??? ??? ??? ?<source>1.8</source> ?? ??? ??? ??? ??? ?<target>1.8</target> ?? ??? ??? ??? ?</configuration> ?? ??? ??? ?</plugin> ?? ??? ?</plugins> ?? ?</build>
后來我在maven的setting.xml文件里面<profiles>標簽下發(fā)現(xiàn)了一個配置
?? ??? ?<profile> ?? ??? ??? ?<id>jdk17</id> ?? ??? ??? ?<activation> ?? ??? ??? ??? ?<activeByDefault>true</activeByDefault> ?? ??? ??? ??? ?<jdk>1.7</jdk> ?? ??? ??? ?</activation> ?? ??? ??? ?<properties> ?? ??? ??? ??? ?<maven.compiler.source>1.7</maven.compiler.source> ?? ??? ??? ??? ?<maven.compiler.target>1.7</maven.compiler.target> ?? ??? ??? ??? ?<maven.compiler.compilerVersion>1.7</maven.compiler.compilerVersion> ?? ??? ??? ?</properties> ?? ??? ?</profile>
在網(wǎng)上查了一下這是一個全局的配置,效果是所有使用這個maven的項目的默認jdk設置為1.7,之后我把這個配置改成1.8的但是還是不行,然后我就覺得可能是我的maven的版本問題,我用的maven版本是3.3.3,然后又下了一個最新版的3.6.0,這一次setting.xml文件只配置了倉庫,沒有配置jdk版本,然后就有效果了,將pom.xml文件里的jdk設置成其他版本也都有用。
之后又在setting.xml文件里面配置了1.8的jdk,發(fā)現(xiàn)pom.xml文件里的jdk配置沒有用了,之后我有將maven換成3.3.3版本的將它的setting.xml文件里的jdk配置去掉,發(fā)現(xiàn)pom.xml文件里面的jdk配置就有效了。
注意:
使用maven的時候不要在setting.xml文件里面配置jdk,只把jdk配置放到pom.xml文件里面,這樣既不會出現(xiàn)maven版本不支持問題,也方便修改項目的jdk版本。
maven version 指定版本不生效
四個Maven項目A,B,C,D
項目A鎖定了D的版本為1.0
項目B使用項目A作為父項目, 項目B引用了項目C
項目C引用了項目D,并指定D的版本為2.0
出現(xiàn)問題
項目B中D的版本號不是2.0, 而是1.0
原因
傳遞依賴被依賴管理鎖定版本(https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Transitive_Dependencies)

解決
- 方法一:
在B項目中鎖定D的版本為2.0
- 方法二:
在B項目中引入版本為2.0的D
- 方法三:
如果你項目的parent或grandparent是像Spring Boot這種依賴的具體版本定義在properties屬性中, 你也可以在你項目中用properties覆蓋對應的版本屬性
比如你項目的parent為spring-boot-starter-parent-1.4.5.RELEASE,而它項目的中elasticsearch版本鎖定在2.4.4

如果你想指定elasticsearch的版本為7.1.1,你可以在你項目POM文件加入以下properties屬性指定.
<properties>
<elasticsearch.version>7.1.1</elasticsearch.version>
</properties>總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Java Lambda表達式與匿名內部類的聯(lián)系和區(qū)別實例分析
這篇文章主要介紹了Java Lambda表達式與匿名內部類的聯(lián)系和區(qū)別,結合實例形式分析了Java Lambda表達式與匿名內部類功能、用法、區(qū)別及操作注意事項,需要的朋友可以參考下2019-10-10
java 學習筆記(入門篇)_java程序helloWorld
安裝配置完Java的jdk,下面就開始寫第一個java程序--hello World.用來在控制臺輸出“Hello World”,接下來詳細介紹,感興趣的朋友可以參考下2013-01-01
基于SpringBoot整合oauth2實現(xiàn)token認證
這篇文章主要介紹了基于SpringBoot整合oauth2實現(xiàn)token 認證,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-01-01
list,set,map,數(shù)組之間的相互轉換詳細解析
以下是對Java中l(wèi)ist,set,map,數(shù)組之間的相互轉換進行了詳細的分析介紹,需要的朋友可以過來參考下2013-09-09
解決Maven項目pom.xml導入了Junit包還是用不了@Test注解問題
在Maven項目中,如果在非test目錄下使用@Test注解,可能會因為pom.xml中<scope>test</scope>的設置而無法使用,正確做法是將測試代碼放在src/test/java目錄下,或去除<scope>test</scope>限制,這樣可以確保Junit依賴正確加載并應用于適當?shù)拇a部分2024-10-10

