maven中配置項目的jdk版本無效的排查方式
maven配置項目的jdk版本無效排查
最近在配置項目的jdk的時候發現在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>標簽下發現瞭一個配置
<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>
在網上查瞭一下這是一個全局的配置,效果是所有使用這個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,發現pom.xml文件裡的jdk配置沒有用瞭,之後我有將maven換成3.3.3版本的將它的setting.xml文件裡的jdk配置去掉,發現pom.xml文件裡面的jdk配置就有效瞭。
註意:
使用maven的時候不要在setting.xml文件裡面配置jdk,隻把jdk配置放到pom.xml文件裡面,這樣既不會出現maven版本不支持問題,也方便修改項目的jdk版本。
maven version 指定版本不生效
四個Maven項目A,B,C,D
項目A鎖定瞭D的版本為1.0
項目B使用項目A作為父項目, 項目B引用瞭項目C
項目C引用瞭項目D,並指定D的版本為2.0
出現問題
項目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>
總結
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- 如何修改maven默認的JDK版本
- Maven提示jdk版本不正確的問題
- maven-compiler-plugin版本指定方式
- 永久解決 Intellij idea 報錯:Error :java 不支持發行版本5的問題
- 使用maven的profile構建不同環境配置的方法