【问题标题】:Gradle 7.2 Custom Plugin: How to consume a version catalog within the apply(project: Project)?Gradle 7.2 自定义插件:如何在应用(项目:项目)中使用版本目录?
【发布时间】:2021-09-04 07:26:03
【问题描述】:

我有一个运行正常的 Gradle 7.2 自定义插件。我想将其配置为使用新的 Gradle 版本目录来获取依赖信息。我知道如何配置和使用版本目录,并为我们的共享依赖项生成了一个共享 jar。其他一些版本正在读取它,没有任何问题。

但是,当插件设置依赖项时,我似乎找不到正确的方法来使用插件的版本目录 jar。我不断收到“'VersionCatalogsExtension' 类型的扩展不存在”。

这里有两个 sn-ps 显示了我在 apply 方法中访问版本目录所做的工作:

    override fun apply(project: Project) {
        val libs = project
           .extensions
           .getByType(VersionCatalogsExtension::class.java)
           .named("libs")
        
        addBuildDependencies(libs)
            .
            .
            .
private fun Project.addBuildDependencies(libs: VersionCatalog) {
    dependencies.apply {
        // BOMs
        add(JavaPlugin.IMPLEMENTATION_CONFIGURATION_NAME, platform(libs.findDependency("arrow.bom").get()))
        add(JavaPlugin.IMPLEMENTATION_CONFIGURATION_NAME, platform(libs.findDependency("detekt.bom").get()))

如果有任何 sn-ps 或重定向,我将不胜感激。

谢谢, 迈克

【问题讨论】:

    标签: gradle android-gradle-plugin build.gradle gradle-plugin gradle-kotlin-dsl


    【解决方案1】:

    你是如何应用插件的?

    我注意到,如果您尝试从 allProjectssubprojects 块执行此操作,它不起作用,它会失败并出现以下错误:

    Extension of type 'VersionCatalogsExtension' does not exist. Currently registered extension types: ...
    

    我认为这与我们不能在这些块中直接使用 libs 的原因相同,请参阅 this comment 了解更多详细信息。

    解决方案是在将使用它的项目中直接引用自定义插件,避免交叉配置。

    【讨论】:

      【解决方案2】:

      请确保在 settings.gradle.kts 文件中添加此代码块

      enableFeaturePreview("VERSION_CATALOGS")
      // == Define locations for components ==
      dependencyResolutionManagement {
          repositories {
              google()
              mavenCentral()
              gradlePluginPortal()
          }
          versionCatalogs {
              create("libs") {
                  from(files("PATH/libs.versions.toml"))
              }
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-07
        • 2018-12-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多