diff --git a/src/functionalTest/gradle-projects/test-bom-module/gradle/libs.versions.toml b/src/functionalTest/gradle-projects/test-bom-module/gradle/libs.versions.toml index 323f0a66..da0084bd 100644 --- a/src/functionalTest/gradle-projects/test-bom-module/gradle/libs.versions.toml +++ b/src/functionalTest/gradle-projects/test-bom-module/gradle/libs.versions.toml @@ -2,10 +2,12 @@ asm = "9.5" managed-dekorate = "3.7.0" +managed-junit = "5.9.10" managed-micronaut-aws = "4.0.1" [libraries] boms-micronaut-aws = { module = "io.micronaut.aws:micronaut-aws-bom", version.ref = "managed-micronaut-aws" } +boms-junit = { module = "org.junit:junit-bom", version.ref = "managed-junit"} # # Libraries which start with managed- are managed by Micronaut in the sense diff --git a/src/functionalTest/groovy/io/micronaut/build/catalogs/BomGenerationFunctionalTest.groovy b/src/functionalTest/groovy/io/micronaut/build/catalogs/BomGenerationFunctionalTest.groovy index efb3be7e..c3cf6c49 100644 --- a/src/functionalTest/groovy/io/micronaut/build/catalogs/BomGenerationFunctionalTest.groovy +++ b/src/functionalTest/groovy/io/micronaut/build/catalogs/BomGenerationFunctionalTest.groovy @@ -30,6 +30,7 @@ aws-lambda = "1.2.2" aws-lambda-events = "3.11.2" aws-lambda-java-serialization = "1.1.2" dekorate = "3.7.0" +junit = "5.9.10" micronaut-aws = "4.0.1" micronaut-test-bom-module = "1.2.3" @@ -42,6 +43,7 @@ aws-lambda-core = {group = "com.amazonaws", name = "aws-lambda-java-core", versi aws-lambda-events = {group = "com.amazonaws", name = "aws-lambda-java-events", version.ref = "aws-lambda-events" } aws-lambda-java-serialization = {group = "com.amazonaws", name = "aws-lambda-java-serialization", version.ref = "aws-lambda-java-serialization" } awssdk-secretsmanager = {group = "software.amazon.awssdk", name = "secretsmanager", version.ref = "aws-java-sdk-v2" } +boms-junit = {group = "org.junit", name = "junit-bom", version.ref = "junit" } dekorate = {group = "io.dekorate", name = "dekorate-project", version.ref = "dekorate" } micronaut-aws-alexa = {group = "io.micronaut.aws", name = "micronaut-aws-alexa", version.ref = "micronaut-aws" } micronaut-aws-alexa-httpserver = {group = "io.micronaut.aws", name = "micronaut-aws-alexa-httpserver", version.ref = "micronaut-aws" } @@ -98,6 +100,7 @@ aws-lambda = "1.2.2" aws-lambda-events = "3.11.2" aws-lambda-java-serialization = "1.1.2" dekorate = "3.7.0" +junit = "5.9.10" micronaut-aws = "4.0.1" micronaut-test-bom-module = "1.2.3" @@ -110,6 +113,7 @@ aws-lambda-core = {group = "com.amazonaws", name = "aws-lambda-java-core", versi aws-lambda-events = {group = "com.amazonaws", name = "aws-lambda-java-events", version.ref = "aws-lambda-events" } aws-lambda-java-serialization = {group = "com.amazonaws", name = "aws-lambda-java-serialization", version.ref = "aws-lambda-java-serialization" } awssdk-secretsmanager = {group = "software.amazon.awssdk", name = "secretsmanager", version.ref = "aws-java-sdk-v2" } +boms-junit = {group = "org.junit", name = "junit-bom", version.ref = "junit" } dekorate = {group = "io.dekorate", name = "dekorate-project", version.ref = "dekorate" } micronaut-aws-alexa = {group = "io.micronaut.aws", name = "micronaut-aws-alexa", version.ref = "micronaut-aws" } micronaut-aws-alexa-httpserver = {group = "io.micronaut.aws", name = "micronaut-aws-alexa-httpserver", version.ref = "micronaut-aws" } diff --git a/src/main/groovy/io/micronaut/build/pom/VersionCatalogConverter.groovy b/src/main/groovy/io/micronaut/build/pom/VersionCatalogConverter.groovy index 78a69075..480ffa62 100644 --- a/src/main/groovy/io/micronaut/build/pom/VersionCatalogConverter.groovy +++ b/src/main/groovy/io/micronaut/build/pom/VersionCatalogConverter.groovy @@ -53,7 +53,7 @@ class VersionCatalogConverter { } void populateModel() { - catalogExtension.versionCatalog {builder -> + catalogExtension.versionCatalog { builder -> Set knownAliases = [] Set knwonVersionAliases = [] extraVersions.forEach { alias, version -> @@ -66,18 +66,19 @@ class VersionCatalogConverter { .versionRef(library.versionRef) } model.versionsTable.each { version -> - if (version.reference.startsWith('managed-')) { - def alias = version.reference.substring(8) + String reference = version.reference + if (isManagedAlias(reference)) { + def alias = reference.substring(8) builder.version(alias, version.version.require) } } model.librariesTable.each { library -> - if (library.alias.startsWith("managed-") && library.version.reference) { - if (!library.version.reference.startsWith("managed-")) { - throw new InvalidUserCodeException("Version catalog declares a managed library '${library.alias}' referencing a non managed version '${library.version.reference}'. Make sure to use a managed version.") + String libraryAlias = library.alias + if ((isManagedAlias(libraryAlias) || isBomAlias(libraryAlias)) && library.version.reference) { + if (!isManagedAlias(library.version.reference)) { + throw new InvalidUserCodeException("Version catalog declares a managed library '${libraryAlias}' referencing a non managed version '${library.version.reference}'. Make sure to use a managed version.") } - - def alias = library.alias.substring(8) + def alias = isBomAlias(libraryAlias) ? libraryAlias : libraryAlias.substring(libraryAlias.indexOf('-') + 1) knownAliases.add(alias) builder.library(alias, library.group, library.name) .versionRef(library.version.reference.substring(8)) @@ -96,6 +97,14 @@ class VersionCatalogConverter { } } + private static boolean isManagedAlias(String libraryAlias) { + libraryAlias.startsWith("managed-") + } + + private static boolean isBomAlias(String reference) { + reference.startsWith('boms-') && !reference.startsWith("boms-micronaut-") + } + static Library library(String group, String name, String versionRef) { new Library(group, name, versionRef) }