'Gradle bundle import to module

I am trying to import base to a project, but I get an error.

settings.gradle

enableFeaturePreview('VERSION_CATALOGS')
dependencyResolutionManagement {
    versionCatalogs {
        libs {
            // https://mvnrepository.com/artifact/org.springframework/spring-core
            version('spring', '5.3.14')
            // https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter
            version('spring-boot', '2.6.2')

            alias('spring-core').to('org.springframework', 'spring-core').versionRef('spring')
            alias('spring-context').to('org.springframework', 'spring-context').versionRef('spring')


            alias('spring-boot').to('org.springframework.boot', 'spring-boot-starter').versionRef('spring-boot')

            bundle('base', ['spring-core', 'spring-context'])
        }
    }
}

module's build.gradle

dependencies {
    implementation(libs.base)

    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
}

refreshing gradle will produce the following error

Could not get unknown property 'base' for extension 'libs' of type org.gradle.accessors.dm.LibrariesForLibs.

How to import libs.base correctly?



Solution 1:[1]

The correct way of referencing a bundle from a version catalog is

libs.bundles.base

Similarly for plugins use:

libs.plugins.yourplugin

It is also possible to reference versions, but this works slightly different. For example:

implementation group: "org.springframework.boot", name: "spring-boot-starter-web-services", version: libs.versions.spring.boot.get()

This assumes a version definition in your catalog which looks like:

version('spring-boot', '2.6.7')

Note that bundles, versions and plugins are all spelled as plural.

Also note that as of Gradle 7 version catalogs are no longer a feature preview. They are available by default. Also, the notation for libraries has changed slightly. You have to use library instead of alias.

See Gradle's support site for more information.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Pieter