我们的组织中有数百个使用工具链 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”的插件。
提前致谢
在 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 '...'
}
}
}
}