溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

maven打包怎么指定jdk的版本

發(fā)布時(shí)間:2023-04-08 14:38:07 來(lái)源:億速云 閱讀:317 作者:iii 欄目:開(kāi)發(fā)技術(shù)

這篇文章主要講解了“maven打包怎么指定jdk的版本”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“maven打包怎么指定jdk的版本”吧!

    maven打包指定jdk的版本

    問(wèn)題

    今天遇到個(gè)問(wèn)題,項(xiàng)目中新寫了一個(gè)接口,其中用到了lambda表達(dá)式,本地跑是沒(méi)問(wèn)題的,但提交到gitLab上,自動(dòng)打包部署時(shí)卻報(bào)錯(cuò)了(這是其他同事配置的)

    報(bào)錯(cuò)信息如下:

    maven打包怎么指定jdk的版本

    可以看出大概意思就是,1.5的jdk不支持lambda表達(dá)式(lambda表達(dá)式確實(shí)是1.8的新特性),后來(lái)查看了下,本地idea中習(xí)慣的把項(xiàng)目中jdk的環(huán)境和語(yǔ)言環(huán)境都設(shè)置的1.8版本,雖然打包時(shí)引的也是jdk8的包,但maven估計(jì)默認(rèn)還是用的1.5的去打包的(估計(jì)是當(dāng)時(shí)這個(gè)項(xiàng)目建立時(shí)使用的1.5的jdk),所以需要在手動(dòng)設(shè)置下maven打包的jdk版本

    這是同事自動(dòng)化部署寫的配置,只是引了jdk1.8的包

    maven打包怎么指定jdk的版本

    百度了一下,還是需要在pom中加配置

    <properties>
           <maven.compiler.source>1.8</maven.compiler.source>
           <maven.compiler.target>1.8</maven.compiler.target>
       </properties>

    maven打包不同jdk版本的包

    對(duì)于MAVEN項(xiàng)目,我們存在將一個(gè)工程同樣的代碼部署到不同的環(huán)境上去的場(chǎng)景,且這些環(huán)境的jdk版本可能會(huì)不同,那么如何一份代碼打不同的jdk版本的包呢?

    基于maven我們就可以很方便的做到這點(diǎn)。

    1. 在項(xiàng)目的pom文件中加入如下配置(主要配置)

    <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.8.0</version>
                    <configuration>
                        <source>${java.version}</source>
                        <target>${java.version}</target>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>3.1.0</version>
                    <configuration>
                        <archive>
                            <manifest>
                                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                            </manifest>
                        </archive>
                    </configuration>
                </plugin>
            </plugins>    
        </build>
        <profiles>
            <profile>
                <id>default</id>
                <activation>
                    <activeByDefault>true</activeByDefault>     <!--默認(rèn)激活該profile-->
                </activation>
                <properties>
                    <java.version>1.8</java.version>            <默認(rèn)用1.8版本>
                </properties>
            </profile>
            <profile>
                <id>jdk17</id>
                <properties>
                    <java.version>1.7</java.version>            <該配置用1.7版本>
                </properties>
                <build>
                    <plugins>
                        <plugin>
                            <artifactId>maven-jar-plugin</artifactId>
                            <executions>
                                <execution>
                                    <phase>package</phase>
                                    <goals>
                                        <goal>jar</goal>
                                    </goals>
                                    <configuration>
                                        <classifier>jdk17</classifier>
                                    </configuration>
                                </execution>
                            </executions>
                        </plugin>
                    </plugins>
                </build>
            </profile>
        </profiles>

    2. 用mvn命令構(gòu)建項(xiàng)目

    mvn -P jdk17 clean 
    mvn -P jdk17 install  #安裝的時(shí)候會(huì)出現(xiàn)2個(gè)包,1.8版本的與1.7版本的都生成了,如:blog-1.0.2.jar、blog-1.0.2-jdk17.jar

    如果需要發(fā)布項(xiàng)目到服務(wù)器

    mvn -P jdk17 -P <depoly配置ID> depoly

    3. 項(xiàng)目中引用

    <!-- 引用1.8編譯版本 -->
    <dependency>
      <groupId>org.test</groupId>
      <artifactId>blog</artifactId>
      <version>0.1</version>
    </dependency>
     
    <!-- 引用1.7編譯版本 -->
    <dependency>
      <groupId>org.test</groupId>
      <artifactId>blog</artifactId>
      <version>0.1</version>
      <classifier>jdk17</classifier>
    </dependency>

    感謝各位的閱讀,以上就是“maven打包怎么指定jdk的版本”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)maven打包怎么指定jdk的版本這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

    向AI問(wèn)一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI