maven打包如何指定jdk的版本

作者:我不想名字重复 时间:2022-12-21 20:59:20 

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>

来源:https://blog.csdn.net/L_Mr_ll/article/details/126836983

标签:maven,打包,jdk,版本
0
投稿

猜你喜欢

  • Java中的length和length()深入分析

    2022-01-23 06:33:01
  • Java多线程--让主线程等待所有子线程执行完毕在执行

    2022-09-14 01:21:34
  • Spring Security实现基于角色的访问控制框架

    2022-03-19 05:40:53
  • mybatis源码解读之executor包懒加载功能 

    2022-09-17 00:28:05
  • Android下保存简单网页到本地(包括简单图片链接转换)实现代码

    2021-05-27 03:45:52
  • SpringBoot中读取application.properties配置文件的方法

    2023-10-20 17:29:05
  • javaweb文件打包批量下载代码

    2022-10-24 17:10:17
  • Java Controller实现参数验证与统一异常处理流程详细讲解

    2022-01-25 18:49:47
  • Android带圆形数字进度的自定义进度条示例

    2021-10-04 20:20:01
  • JAVA使用Gson解析json数据实例解析

    2021-08-23 14:50:56
  • Java 常见排序算法代码分享

    2023-09-30 08:23:09
  • SpringBoot MainApplication类文件的位置详解

    2023-10-28 16:21:12
  • SpringBoot集成vue的开发解决方案

    2023-11-24 20:58:10
  • C#使用LitJson解析JSON的示例代码

    2021-11-17 06:35:05
  • C#绘制饼状图和柱状图的方法

    2023-12-19 15:42:59
  • 深入探讨C#中的const、readonly关键字

    2023-01-20 23:42:25
  • C# 设计模式系列教程-外观模式

    2023-01-08 18:44:40
  • Java线程的全方位详解

    2023-04-11 14:02:55
  • Android开发中记一个SwipeMenuListView侧滑删除错乱的Bug

    2021-08-02 04:24:21
  • Java基于接口实现模拟动物声音代码实例

    2022-07-28 04:46:07
  • asp之家 软件编程 m.aspxhome.com