开发者

maven打包如何指定jdk的版本

开发者 https://www.devze.com 2023-04-09 10:17 出处:网络 作者: 我不想名字重复
目录maven打包指定jdk的版本问题maven打包不同jdk版本的包1. 在项目的pom文件中加入如下配置(主要配置)2. 用mvn命令构建项目3. 项php目中引用总结maven打包指定jdk的版本
目录
  • maven打包指定jdk的版本
    • 问题
  • maven打包不同jdk版本的包
    • 1. 在项目的pom文件中加入如下配置(主要配置)
    • 2. 用mvn命令构建项目
    • 3. 项php目中引用
  • 总结

    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>
           <mavejsn.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>
                  <python;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&g编程t;
        <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. 用RjAeGmvn命令构建项目

    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>
     <开发者_Python开发;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>

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    关注公众号