如何将 org.gradle.toolchains.foojay-resolver-convention 插件应用到自定义 gradle 发行版?

问题描述 投票:0回答:1

我们的组织中有数百个使用工具链 sdk 自动下载 gradle 7.6.2 的 gradle 项目。 我们还有一个自定义的 gradle 发行版,提供给所有团队。

Gradle 8 升级说明说

在未配置存储库的情况下使用自动工具链下载 不再支持在不明确提供要使用的存储库的情况下自动下载工具链。请参阅用户手册了解更多信息。

我们不想强迫数十个团队必须手动添加

plugins {
    id 'org.gradle.toolchains.foojay-resolver-convention' version '0.7.0'
}

数百个 settings.gradle 文件并且必须管理版本的更新。 因为我们已经为 gradle 8.3 提供了一个自定义的 gradle 发行版,并且它包含一个 init.gradle 脚本来设置一些全局变量。我们希望在 init.gradle 中应用该约定。

我尝试在 init.gradle 中应用 org.gradle.toolchains.foojay-resolver-convention 失败 我还尝试直接通过其类名应用该插件。 我在网上搜索并阅读了 gradle 代码。

我设法在发行版 gradle-8.3/lib/plugins 目录中添加 foojay-resolver-0.7.0.jar

包装器运行后,我可以在 ~/.gradle/wrapper/dists/our-distribution-dir/ generated-cache-dir/gradle-8.3/lib/plugins 以及 gradle-plugins-8.3.jar 中看到它

我很确定有一种方法可以实现这一目标。我只是还没找到。

当我尝试使用班级名称时

settingsEvaluated { settings ->
    settings.pluginManagement {
        repositories {
            maven {
                url repoUrl
            }
        }
    }

    settings.apply plugin: 'org.gradle.toolchains.foojay.FoojayToolchainsConventionPlugin'
}

I get

> Could not get unknown property 'org' for build of type org.gradle.invocation.DefaultGradle.


当我尝试使用插件 ID 时

settingsEvaluated { settings ->
    settings.pluginManagement {
        repositories {
            maven {
                url repoUrl
            }
        }
    }

    settings.apply plugin: 'org.gradle.toolchains.foojay-resolver-convention'
}

我明白了

未找到 ID 为“org.gradle.toolchains.foojay-resolver-convention”的插件。

提前致谢

gradle
1个回答
0
投票

在 init.gradle 中

beforeSettings { settings ->
  settings.buildscript.repositories {
    maven {
      url '...'
    }
  }
  settings.buildscript.dependencies {
    classpath("org.gradle.toolchains:foojay-resolver:0.8.0")
  }
}

settingsEvaluated { settings ->
  settings.apply plugin: 'org.gradle.toolchains.foojay-resolver-convention'
  settings.pluginManagement {
    repositories {
      maven {
        url '...'
      }
    }
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.