温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

maven打包怎么指定jdk的版本

发布时间:2023-04-08 14:38:07 来源:亿速云 阅读:328 作者:iii 栏目:开发技术

这篇文章主要讲解了“maven打包怎么指定jdk的版本”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“maven打包怎么指定jdk的版本”吧!

    maven打包指定jdk的版本

    问题

    今天遇到个问题,项目中新写了一个接口,其中用到了lambda表达式,本地跑是没问题的,但提交到gitLab上,自动打包部署时却报错了(这是其他同事配置的)

    报错信息如下:

    maven打包怎么指定jdk的版本

    可以看出大概意思就是,1.5的jdk不支持lambda表达式(lambda表达式确实是1.8的新特性),后来查看了下,本地idea中习惯的把项目中jdk的环境和语言环境都设置的1.8版本,虽然打包时引的也是jdk8的包,但maven估计默认还是用的1.5的去打包的(估计是当时这个项目建立时使用的1.5的jdk),所以需要在手动设置下maven打包的jdk版本

    这是同事自动化部署写的配置,只是引了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版本的包

    对于MAVEN项目,我们存在将一个工程同样的代码部署到不同的环境上去的场景,且这些环境的jdk版本可能会不同,那么如何一份代码打不同的jdk版本的包呢?

    基于maven我们就可以很方便的做到这点。

    1. 在项目的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>     <!--默认激活该profile-->
                </activation>
                <properties>
                    <java.version>1.8</java.version>            <默认用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命令构建项目

    mvn -P jdk17 clean 
    mvn -P jdk17 install  #安装的时候会出现2个包,1.8版本的与1.7版本的都生成了,如:blog-1.0.2.jar、blog-1.0.2-jdk17.jar

    如果需要发布项目到服务器

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

    3. 项目中引用

    <!-- 引用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的版本”的内容了,经过本文的学习后,相信大家对maven打包怎么指定jdk的版本这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

    向AI问一下细节

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    AI