指定应用及子应用编译的 JDK 版本


有时候应用的实现需要用到高版本 JDK 的一些特性,比如说 lambda 表达式需要 1.8 版本以上,而对外提供的 API 则需要设置较低的 JDK 版本便于兼容外部较老的应用,这就需要分别单独设置编译版本。在 Spring Boot 的 1.5.17.RELEASE 版本的 pom 文件中可以看到其默认的版本是 1.6 如下所示,因此在不做另行设置的情况下,将按照 1.6 版本编译。

<properties>
  <java.version>1.6</java.version>
  <resource.delimiter>@</resource.delimiter> <!-- delimiter that doesn't clash with Spring ${} placeholders -->
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  <maven.compiler.source>${java.version}</maven.compiler.source>
  <maven.compiler.target>${java.version}</maven.compiler.target>
</properties>

如果我们想将应用中的 API 部分使用 1.7 版本,而实现部分用 1.8 版本,应该怎么实现呢?

  • 首先我们在应用的根 pom 中将默认编译版本修改为 1.8
<properties>
  <!-- 修改默认版本编译为 1.8 -->
  <java.version>1.8</java.version>
  <!-- API 统一使用 1.7 编译 -->
  <api.jdk.version>1.7</api.jdk.version>
</properties>
  • 然后对 api 的 pom 文件进行单独进行配置
<build>
  <plugins>
    <!-- 指定编译 JDK 版本 -->
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <configuration>
        <source>${api.jdk.version}</source>
        <target>${api.jdk.version}</target>
        <encoding>${project.build.sourceEncoding}</encoding>
      </configuration>
    </plugin>
  </plugins>
</build>
Copyright © jverson.com 2018 all right reserved,powered by GitbookFile Modify: 2018-10-26 22:50:07

results matching ""

    No results matching ""