在多模块项目中使用 versionCatalog 插件 - Gradle kts

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

我有一个 Gradle Kotlin mutli 模块项目,并且希望能够使用同一项目内的模块之一中内置的 versionCatalog。

versionCatalog 是使用子模块

version-catalog
中的
issuing-commons-dependency
插件构建的,看起来像这样:

plugins {
    `version-catalog`
    `maven-publish`
}

catalog {
    versionCatalog {
        version("spring-boot-version", "2.5.12")

        plugin("spring-boot-plugin", "org.springframework.boot").versionRef("spring-boot-version")

        library("spring-webflux", "org.springframework.boot", "spring-boot-starter-webflux").versionRef("spring-boot-version")
        library("spring-web", "org.springframework.boot", "spring-boot-starter-web").versionRef("spring-boot-version")
    }
}


publishing {
    publications {
        create<MavenPublication>("maven") {
            from(components["versionCatalog"])
        }
    }
}

所以我想我可以在根级别做这样的事情

dependencyResolutionManagement {
    versionCatalogs {
        create("libs") {
            from(":commons-dependency")
        }
    }
}
  • 导致错误
    Cannot resolve external dependency :commons-dependency because no repositories are defined

或者子项目级别的类似内容

val libs = project.rootProject
        .extensions
        .getByType(VersionCatalogsExtension::class.java)
        .named("libs")
  • 导致错误
    Exception is: org.gradle.api.UnknownDomainObjectException: Extension of type 'VersionCatalogsExtension' does not exist. Currently registered extension types: [ExtraPropertiesExtension, BasePluginExtension, DefaultArtifactPublicationSet, SourceSetContainer, ReportingExtension, JavaPluginExtension, JavaToolchainService, TestingExtension, KotlinJvmProjectExtension, KotlinTestsRegistry, JacocoPluginExtension, SonarQubeExtension, DetektExtension, IdeaModel, AllOpenExtension, PublishingExtension, ScriptingExtension]

我正在使用

gradle-7.5.1

gradle dependency-management gradle-plugin
1个回答
0
投票

可以将其添加到settings.gradle.kts,但在干净的构建后它将不起作用。

dependencyResolutionManagement {
    versionCatalogs {
        create("libs") {
            from(files("dependency/build/version-catalog/libs.versions.toml"))
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.