当前位置: 首页 > 知识库问答 >
问题:

如何用多个jdk版本的gradle构建多个项目?

温智明
2023-03-14

请给一些建议来解决这个问题?

共有1个答案

水恩
2023-03-14

从Gradle6.7开始,Gradle引入了工具链的概念。工具链允许定义用于编译/运行项目的JDK版本,即不同于运行Gradle的JDK版本。

这就像在构建脚本中编写一样简单:

java {
    toolchain {
        languageVersion = JavaLanguageVersion.of(15)
    }
}

Gradle将在通常的标准本地路径上查找所请求的工具链(您可以evn通过org.Gradle.java.installations.paths属性提供您自己的查找位置),并最终下载它。它甚至支持多个OpenJDK供应商。他们的文件解释了一切。

.
├── jdk11
│   ├── build.gradle
│   └── src
├── jdk16
│   ├── build.gradle
│   └── src
├── jdk17
│   ├── build.gradle
│   └── src
├── build.gradle
├── gradle.properties
└── settings.gradle
  rootProject.name = 'THE-project'    
  include("jdk11", "jdk16", "jdk17")
  subprojects {
    apply(plugin: "java-library") // or whatever applies to the sub-project

    // repositories, test, ...
  }
  org.gradle.java.installations.paths=/path to panama jdk,/path to loom jdk,etc

jdk11/build.gradle

  java {
    toolchain {
      languageVersion = JavaLanguageVersion.of(11)
    }
  }

  tasks.withType(JavaCompile) {
    options.release.set(11)
  }

  // dependencies, etc.

jdk16/build.gradle

  java {
    toolchain {
      languageVersion = JavaLanguageVersion.of(16)
    }
  }

  tasks.withType(JavaCompile) {
    options.release.set(16)
  }

  // dependencies, etc.

jdk17/build.gradle

  java {
    toolchain {
      languageVersion = JavaLanguageVersion.of(17)
    }
  }

  tasks.withType(JavaCompile) {
    options.release.set(17)
    options.compilerArgs = ['--add-modules=jdk.incubator.foreign',
                            '--enable-preview',
                            '-Xlint:preview']
  }

  // dependencies, etc.
 类似资料:
  • (该章需加入更多内容。。。原稿写的太简单了)我们同时也加入了一个发行版本, 将会送到客户端: Example 7.14. 多项目构建 - 发行文件 api/build.gradle task dist(type: Zip) { dependsOn spiJar from 'src/dist' into('libs') { from spiJar.archiv

  • 我有多个java项目。这些项目正在使用Gradle创建jar、war和ear文件。在每个项目中,我都使用清单文件来维护元数据,如版本、日期-时间...为此,我在每个build.gradle文件中都包含了清单文件创建逻辑。 但在Gradle中有一个特性调用SharedManifest。我在主项目build.gradle脚本中定义了以下两个任务。但是在每个jar和war文件中都有gradle创建的默认

  • 主要内容:多项目构建的结构,指定常规构建配置,项目指定配置和依赖关系,Gradle多项目构建的示例,子项目配置,参考可以轻松处理各种大小规模的项目。小项目由一个单一的构建文件和一个源代码树构成。 大项目可以将其拆分成更小的,相互依赖的模块,以便更容易理解。Gradle完美支持这种多项目构建的场景。 多项目构建的结构 这种构建有各种形状和大小,但它们都有一些共同的特点 - 在项目的根目录或主目录中都有一个文件。 根目录或主目录都有一个文件。 具有自己的构建文件的子目录(某些多项目构建可能会省略子项

  • 为了定义一个多项目构建, 你需要创建一个设置文件 ( settings file). 设置文件放在源代码的根目录, 它指定要包含哪个项目. 它的名字必须叫做 settings.gradle. 在这个例子中, 我们使用一个简单的分层布局. 下面是对应的设置文件: Example 7.11. 多项目构建 - settings.gradle file settings.gradle include "s

  • 问题内容: 我们有一个新的应用程序,需要glibc 2.4(来自gcc 4.1)。我们运行的机器具有gcc 3.4.6。我们无法升级,并且应用程序必须在此计算机上运行。 我们安装了gcc 4.1,但是在编译时,它使用的是3.4.6中的所有include等。 我们如何解决这个问题? 关于仅将此应用程序使用4.1的任何建议? 问题答案: 请参阅“如何安装GCC的多个版本” 这里的GNU GCC FAQ

  • 我是Gradle的新手,我刚刚开始使用多项目构建。目前,我正在为服务使用spring boot,我有以下目录结构 下面是根的配置 建筑格拉德尔(根) 设置。格拉德尔(根) 模块的Gradle配置 API-admin(模块) 我添加了jar闭包以防止运行时出错。这避免了它无法运行时说“没有清单”的问题 然而,即使在添加了jar闭包之后,现在也出现了一个新问题 现在我知道这是说找不到类,但我的问题是它