gpt4 book ai didi

android - Gradle 7.2 : How to apply a custom Gradle SETTINGS plugin?

转载 作者:行者123 更新时间:2023-12-04 23:49:49 27 4
gpt4 key购买 nike

我正在将 buildSrc 约定插件迁移到独立插件中。有很多为 Project 对象创建 Gradle 插件的示例,但真正缺乏 Settings 和 Gradle。我想集中我们在 gradle.settings.kts 文件中使用的存储库列表,所以我创建了一个 Gradle 设置插件:RepositoriesPlugin。
它在项目插件中以相同的方式实现,但是,我不确定如何解释 Gradle 文档中的以下引用:“插件可以改为接收设置类型的参数,在这种情况下,插件可以是 在设置脚本中应用。”,如此链接的文档中所述:Gradle 7.2 Doc
以下示例显示了我如何在 settings.gradle.kts 文件中应用我的设置插件。 根据文档,这是如何应用设置插件的吗?
我也在下面包含了基本设置插件代码。
感谢您的帮助,以澄清我正在正确地执行此操作。我相信这篇文章会帮助那些远离项目插件的人。
感谢您的时间和兴趣..

// settings.gradle.kts

pluginManagement {
plugins {
id("com.abitofhelp.gradle.plugins.repositoriesplugin") version "1.0.0-1"
}

settings.extensions
getByType(RepositoriesPluginExtension::class).apply {
localRepoName = "local-repo"
localRepositoryPath = "../../local-repo"
}

// Set the plugin repositories for all projects.
//repositories {
// maven { name = "localRepo"; url = uri(file("./local-repo")) }
// gradlePluginPortal()
// mavenCentral()
//}
}
// repositoriesplugin.kt
open class RepositoriesPlugin: Plugin<Settings> {
override fun apply(settings: Settings) {
val extension: RepositoriesPluginExtension =
settings.extensions.create("repositoriesPlugin", RepositoriesPluginExtension::class.java)

val localRepositoryName = extension.localRepositoryName?.let { it }?: "../../localRepo"
val localRepositoryPath = extension.localRepositoryPath?.let { it }?: "../../local-repo"

settings.pluginManagement.repositories.apply {
// Set the PLUGIN REPOSITORIES for all subprojects.
maven { repository ->
repository.name = localRepositoryName
repository.url = URI.create(localRepositoryPath)
}
gradlePluginPortal()
mavenCentral()
}

settings.dependencyResolutionManagement.repositories.apply {
// Set the DEPENDENCY REPOSITORIES for all subprojects.
maven {
it.name = localRepositoryName
it.url = URI.create(localRepositoryPath)
}
mavenCentral()
gradlePluginPortal()
}
}
}

最佳答案

我只需要自己弄清楚这一点。您最初的尝试并不遥远,但 plugins block 实际上必须在 pluginManagement 之后进行堵塞。我的工作实现的基本布局如下所示:

// settings.gradle.kts

rootProject.name = "myProject"

pluginManagement {
repositories {
maven {
url = uri("/tmp/maven-local")
gradlePluginPortal()
}
}
}

plugins {
id("com.example.my-plugin") version "1.0-SNAPSHOT"
}

关于android - Gradle 7.2 : How to apply a custom Gradle SETTINGS plugin?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69149466/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com