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。

推薦閱讀: