diff --git a/buildSrc/src/main/groovy/io/micronaut/guides/GuideMetadata.groovy b/buildSrc/src/main/groovy/io/micronaut/guides/GuideMetadata.groovy index 070d92e428..fa6e217a98 100644 --- a/buildSrc/src/main/groovy/io/micronaut/guides/GuideMetadata.groovy +++ b/buildSrc/src/main/groovy/io/micronaut/guides/GuideMetadata.groovy @@ -1,9 +1,12 @@ package io.micronaut.guides +import groovy.transform.Canonical import groovy.transform.CompileStatic +import groovy.transform.EqualsAndHashCode import groovy.transform.ToString import io.micronaut.starter.api.TestFramework import io.micronaut.starter.application.ApplicationType +import io.micronaut.starter.options.BuildTool import io.micronaut.starter.options.Language import java.time.LocalDate @@ -36,6 +39,8 @@ class GuideMetadata { List zipIncludes + Set skips + Map env List apps @@ -60,6 +65,38 @@ class GuideMetadata { tagsList as List } + boolean shouldSkip(BuildTool buildTool) { + if (buildTool == BuildTool.GRADLE) { + return skipGradleTests + } + if (buildTool == BuildTool.MAVEN) { + return skipMavenTests + } + false + } + + boolean shouldSkip(BuildTool buildTool, Language language) { + return skips.contains(new Skip(buildTool, language)) + } + + @Canonical + @CompileStatic + static class Skip { + + final BuildTool buildTool + final Language language + + Skip(String buildTool, String language) { + this.buildTool = BuildTool.valueOf(buildTool.toUpperCase()) + this.language = Language.valueOf(language.toUpperCase()) + } + + Skip(BuildTool buildTool, Language language) { + this.buildTool = buildTool + this.language = language + } + } + @ToString(includeNames = true) @CompileStatic static class App { diff --git a/buildSrc/src/main/groovy/io/micronaut/guides/GuideProjectGenerator.groovy b/buildSrc/src/main/groovy/io/micronaut/guides/GuideProjectGenerator.groovy index c05635e6d9..2b28557c6e 100644 --- a/buildSrc/src/main/groovy/io/micronaut/guides/GuideProjectGenerator.groovy +++ b/buildSrc/src/main/groovy/io/micronaut/guides/GuideProjectGenerator.groovy @@ -113,6 +113,7 @@ class GuideProjectGenerator implements AutoCloseable { skipMavenTests: config.skipMavenTests ?: false, minimumJavaVersion: config.minimumJavaVersion, maximumJavaVersion: config.maximumJavaVersion, + skips: (config.skips.collect { new GuideMetadata.Skip(it[0], it[1]) } ?: []).toSet(), zipIncludes: config.zipIncludes ?: [], env: config.env ?: [:], apps: config.apps.collect { it -> @@ -334,8 +335,12 @@ class GuideProjectGenerator implements AutoCloseable { List guidesOptionList = [] for (BuildTool buildTool : BuildTool.values()) { - if (buildTools.contains(buildTool.toString())) { + if (buildTools.contains(buildTool.toString()) && !guideMetadata.shouldSkip(buildTool)) { for (Language language : Language.values()) { + if (guideMetadata.shouldSkip(buildTool, language)) { + LOG.info("Skipping index guide for $buildTool and $language") + continue + } if (languages.contains(language.toString())) { guidesOptionList << createGuidesOption(buildTool, language, testFramework) } @@ -405,6 +410,7 @@ class GuideProjectGenerator implements AutoCloseable { merged.skipMavenTests = base.skipMavenTests || metadata.skipMavenTests merged.minimumJavaVersion = metadata.minimumJavaVersion ?: base.minimumJavaVersion merged.maximumJavaVersion = metadata.maximumJavaVersion ?: base.maximumJavaVersion + merged.skips = metadata.skips + base.skips merged.zipIncludes = metadata.zipIncludes // TODO support merging from base merged.env = metadata.env ?: base.env merged.apps = mergeApps(base, metadata) diff --git a/buildSrc/src/main/groovy/io/micronaut/guides/TestScriptGenerator.groovy b/buildSrc/src/main/groovy/io/micronaut/guides/TestScriptGenerator.groovy index 10346a573a..255216fc3e 100644 --- a/buildSrc/src/main/groovy/io/micronaut/guides/TestScriptGenerator.groovy +++ b/buildSrc/src/main/groovy/io/micronaut/guides/TestScriptGenerator.groovy @@ -1,7 +1,6 @@ package io.micronaut.guides import groovy.transform.CompileStatic -import io.micronaut.starter.options.BuildTool import java.util.stream.Collectors import static io.micronaut.guides.GuideProjectGenerator.DEFAULT_APP_NAME import static io.micronaut.starter.options.BuildTool.GRADLE @@ -142,12 +141,6 @@ kill_kotlin_daemon () { for (GuidesOption guidesOption : guidesOptionList) { String folder = GuideProjectGenerator.folderName(metadata.slug, guidesOption) BuildTool buildTool = folder.contains(MAVEN.toString()) ? MAVEN : GRADLE - if (buildTool == MAVEN && metadata.skipMavenTests) { - continue - } - if (buildTool == GRADLE && metadata.skipGradleTests) { - continue - } if (metadata.apps.any { it.name == DEFAULT_APP_NAME } ) { def defaultApp = metadata.apps.find { it.name == DEFAULT_APP_NAME } if (!nativeTest || supportsNativeTest(defaultApp, guidesOption)) { diff --git a/buildSrc/src/main/java/io/micronaut/guides/spotless/Spotless.java b/buildSrc/src/main/java/io/micronaut/guides/spotless/Spotless.java index f9d7c76f22..607a53bd74 100644 --- a/buildSrc/src/main/java/io/micronaut/guides/spotless/Spotless.java +++ b/buildSrc/src/main/java/io/micronaut/guides/spotless/Spotless.java @@ -14,6 +14,7 @@ import io.micronaut.starter.feature.Category; import io.micronaut.starter.feature.Feature; import io.micronaut.starter.feature.FeaturePhase; +import io.micronaut.starter.feature.build.MicronautGradleEnterprise; import io.micronaut.starter.options.BuildTool; import io.micronaut.starter.options.Language; import io.micronaut.starter.template.BinaryTemplate; @@ -90,9 +91,13 @@ private List languages(GeneratorContext generatorContext) { private GradlePlugin gradleBuildPlugin(GeneratorContext generatorContext) { - return GradlePlugin.builder() - .id("com.diffplug.spotless") - .lookupArtifactId("spotless-plugin-gradle") + GradlePlugin.Builder gradlePlugin = GradlePlugin.builder() + .id("com.diffplug.spotless"); + // If we are applying the MicronautGradle Enterprise plugin, we don't need to add the spotless plugin version (as it is already included) + if (!generatorContext.hasFeature(MicronautGradleEnterprise.class)) { + gradlePlugin.lookupArtifactId("spotless-plugin-gradle"); + } + return gradlePlugin .extension(new RockerWritable(spotlessGradle.template(languages(generatorContext)))) .build(); } diff --git a/guides/micronaut-microservices-distributed-tracing-jaeger-opentelemetry/metadata.json b/guides/micronaut-microservices-distributed-tracing-jaeger-opentelemetry/metadata.json index 25288f3725..f7b5026149 100644 --- a/guides/micronaut-microservices-distributed-tracing-jaeger-opentelemetry/metadata.json +++ b/guides/micronaut-microservices-distributed-tracing-jaeger-opentelemetry/metadata.json @@ -5,7 +5,6 @@ "tags": ["jaeger", "validation", "distributed-tracing"], "categories": ["Distributed Tracing"], "publicationDate": "2022-08-04", - "languages": ["java"], "apps": [ { "name": "bookcatalogue", diff --git a/guides/micronaut-microservices-distributed-tracing-jaeger/metadata.json b/guides/micronaut-microservices-distributed-tracing-jaeger/metadata.json index 209d196d00..6e9765c6fc 100644 --- a/guides/micronaut-microservices-distributed-tracing-jaeger/metadata.json +++ b/guides/micronaut-microservices-distributed-tracing-jaeger/metadata.json @@ -4,6 +4,7 @@ "authors": ["Sergio del Amo"], "tags": ["jaeger", "validation", "distributed-tracing"], "categories": ["Distributed Tracing"], + "skips": [["maven", "groovy"]], "publicationDate": "2018-08-13", "apps": [ { diff --git a/guides/micronaut-microservices-distributed-tracing-zipkin/metadata.json b/guides/micronaut-microservices-distributed-tracing-zipkin/metadata.json index 18bdf02350..0569ab8796 100644 --- a/guides/micronaut-microservices-distributed-tracing-zipkin/metadata.json +++ b/guides/micronaut-microservices-distributed-tracing-zipkin/metadata.json @@ -4,6 +4,7 @@ "authors": ["Sergio del Amo"], "tags": ["distributed-tracing", "zipkin", "validation"], "categories": ["Distributed Tracing"], + "skips": [["maven", "groovy"]], "publicationDate": "2018-08-13", "apps": [ { diff --git a/version.txt b/version.txt index cca25a93cd..1d068c6ec6 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -4.4.1 +4.4.2