[DevOps]项目升级从java8 到 java11 - ep1

115 阅读1分钟

马上九月份java21就要来了,很多开源项目都放弃java8的维持了,大多数人都开始升级现有项目到java11,甚至使用较新的java17版本。

升级一个java 8的项目到java11 也不是特别难,大概分为一下步骤

pom文件修改

修改java 版本

<java.version>1.8</java.version><java.version>11</java.version>

这里java.version只是pom的一个属性,可以根据自己项目实际情况找出对应的值进行修改。

maven Compiler 编译器

根据我们的上下文关系,将一下java8的pom文件 :

<plugins>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.11.0</version>
    <configuration>
      <source>${java.version}</source>
      <target>${java.version}</target>
    </configuration>
  </plugin>
</plugins>

修改为 java 11版本的:

<plugins>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.11.0</version>
    <configuration>
      <release>${java.version}</release>
    </configuration>
  </plugin>
</plugins>

添加一些依赖

jaxb

一些web相关的依赖被java 11移除了,为了避免出现编译错误,让我们添加一些依赖吧

比如:

<dependency>
    <groupId>javax.annotation</groupId>
    <artifactId>javax.annotation-api</artifactId>
    <version>1.3.2</version>
</dependency>
<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.4.0-b180725.0427</version>
</dependency>
<dependency>
    <groupId>org.glassfish.jaxb</groupId>
    <artifactId>jaxb-runtime</artifactId>
    <version>2.4.0-b180725.0644</version>
</dependency>

或者你也可以使用

<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.3.0</version>
</dependency>
<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-core</artifactId>
    <version>2.3.0</version>
</dependency>
<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-impl</artifactId>
    <version>2.3.0</version>
</dependency>

jaxws

在java 11中移除了,可能需要临时添加来让老旧的java8 🏃跑起来

<dependency>
    <groupId>com.sun.xml.ws</groupId>
    <artifactId>jaxws-ri</artifactId>
    <version>2.3.2</version>
    <type>pom</type>
</dependency>

jakarta

<dependency>  
<groupId>jakarta.ws.rs</groupId>  
<artifactId>jakarta.ws.rs-api</artifactId>  
<version>3.1.0</version>  
</dependency>

Docker 镜像

如果🈶️docker 镜像文件,需要将java8版本用java11来替换。

Springboot用户

需要使用2.1.0 以后的版本