Warm tip: This article is reproduced from serverfault.com, please click

java-如何为每个项目指定本地 gradle.properties?

(java - How can I specify local gradle.properties per project?)

发布于 2021-07-21 16:49:07

gradle.properties文件通常包含在版本控制中,因此所有贡献者都可以拥有一致的环境,因此你不能在其中存储用户定义的属性,并且用户定义的属性同时应用于所有项目。我想为org.gradle.java.home与我的默认 JDK 不兼容的项目设置属性,但我不能使用项目级别gradle.properties,因为不同机器上的 JDK 路径不一样,我只想为特定项目更改 JDK 路径,而不是全部他们。

有没有一种方便的方法来为单个项目指定本地 Gradle 属性?

Questioner
Daniikk1012
Viewed
33
mikhail.sharashin 2021-07-22 18:10:11

一种可能的解决方案:

  1. 为自定义 JDK 定义别名,例如:jdk-8,jdk-11
  2. 所有贡献者都应该通过构建环境(Gradle Docs中的任何方式)指定这些 JDK 的路径。例如:
// file ~/.gradle/gradle.properties
jdk-8=/path/to/jdk8
jdk-11=/path/to/jdk11

jdk-8并将jdk-11在任何构建中由 Gradle 解析为属性。

  1. javaCompile在 root 中为特定项目配置任务build.gradle.kts
fun Project.setupCustomJdk(jdkAlias: String) {
    findProperty(jdkAlias)?.toString()?.trim()?.let { customJdkPath ->
        tasks.withType<JavaCompile> {
            options.isFork = true
            options.forkOptions.javaHome = File(customJdkPath)
            logger.info("Task javaCompile using JDK from $customJdkPath")
        }
    } ?: logger.warn("Unknown property '$jdkAlias'")
}

project(":app").setupCustomJdk("jdk-11")
project(":lib").setupCustomJdk("jdk-8")