diff --git a/grails-forge-core/src/main/java/org/grails/forge/build/dependencies/Dependency.java b/grails-forge-core/src/main/java/org/grails/forge/build/dependencies/Dependency.java index 1b5f345e..d0f97be9 100644 --- a/grails-forge-core/src/main/java/org/grails/forge/build/dependencies/Dependency.java +++ b/grails-forge-core/src/main/java/org/grails/forge/build/dependencies/Dependency.java @@ -195,12 +195,12 @@ public Builder compileOnly() { return scope(Scope.COMPILE_ONLY); } - public Builder runtime() { - return scope(Scope.RUNTIME); + public Builder runtimeOnly() { + return scope(Scope.RUNTIME_ONLY); } - public Builder test() { - return scope(Scope.TEST); + public Builder testImplementation() { + return scope(Scope.TEST_IMPLEMENTATION); } @SuppressWarnings("unused") @@ -208,8 +208,8 @@ public Builder testCompileOnly() { return scope(Scope.TEST_COMPILE_ONLY); } - public Builder testRuntime() { - return scope(Scope.TEST_RUNTIME); + public Builder testRuntimeOnly() { + return scope(Scope.TEST_RUNTIME_ONLY); } public Builder annotationProcessor() { diff --git a/grails-forge-core/src/main/java/org/grails/forge/build/dependencies/Scope.java b/grails-forge-core/src/main/java/org/grails/forge/build/dependencies/Scope.java index dab1c1ef..7710a279 100644 --- a/grails-forge-core/src/main/java/org/grails/forge/build/dependencies/Scope.java +++ b/grails-forge-core/src/main/java/org/grails/forge/build/dependencies/Scope.java @@ -30,11 +30,11 @@ public class Scope { public static final Scope COMPILE_ONLY = new Scope(Source.MAIN, Collections.singletonList(Phase.COMPILATION)); public static final Scope CONSOLE = new Scope(Source.MAIN, Collections.singletonList(Phase.CONSOLE)); public static final Scope DEVELOPMENT_ONLY = new Scope(Source.MAIN, Collections.singletonList(Phase.DEVELOPMENT_ONLY)); - public static final Scope RUNTIME = new Scope(Source.MAIN, Collections.singletonList(Phase.RUNTIME)); - public static final Scope TEST = new Scope(Source.TEST, Arrays.asList(Phase.COMPILATION, Phase.RUNTIME)); + public static final Scope RUNTIME_ONLY = new Scope(Source.MAIN, Collections.singletonList(Phase.RUNTIME)); + public static final Scope TEST_IMPLEMENTATION = new Scope(Source.TEST, Arrays.asList(Phase.COMPILATION, Phase.RUNTIME)); public static final Scope TEST_ANNOTATION_PROCESSOR = new Scope(Source.TEST, Collections.singletonList(Phase.ANNOTATION_PROCESSING)); public static final Scope TEST_COMPILE_ONLY = new Scope(Source.TEST, Collections.singletonList(Phase.COMPILATION)); - public static final Scope TEST_RUNTIME = new Scope(Source.TEST, Collections.singletonList(Phase.RUNTIME)); + public static final Scope TEST_RUNTIME_ONLY = new Scope(Source.TEST, Collections.singletonList(Phase.RUNTIME)); public static final Scope OPENREWRITE = new Scope(Source.MAIN, Collections.singletonList(Phase.OPENREWRITE)); public static final Scope PROFILE = new Scope(Source.MAIN, Collections.singletonList(Phase.PROFILE)); public static final Scope CLASSPATH = new Scope(Source.BUILDSCRIPT, Collections.singletonList(Phase.BUILD)); diff --git a/grails-forge-core/src/main/java/org/grails/forge/feature/assetPipeline/AssetPipeline.java b/grails-forge-core/src/main/java/org/grails/forge/feature/assetPipeline/AssetPipeline.java index 1c4fd299..d08eb6df 100644 --- a/grails-forge-core/src/main/java/org/grails/forge/feature/assetPipeline/AssetPipeline.java +++ b/grails-forge-core/src/main/java/org/grails/forge/feature/assetPipeline/AssetPipeline.java @@ -70,7 +70,7 @@ public void apply(GeneratorContext generatorContext) { generatorContext.addDependency(Dependency.builder() .groupId("com.bertramlabs.plugins") .lookupArtifactId("asset-pipeline-grails") - .runtime()); + .runtimeOnly()); final ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); generatorContext.addTemplate("advancedgrails_svg", new URLTemplate("grails-app/assets/images/advancedgrails.svg", classLoader.getResource("assets/images/advancedgrails.svg"))); diff --git a/grails-forge-core/src/main/java/org/grails/forge/feature/build/gradle/templates/dependencies.rocker.raw b/grails-forge-core/src/main/java/org/grails/forge/feature/build/gradle/templates/dependencies.rocker.raw index 9f5c9f21..7e5c5c02 100644 --- a/grails-forge-core/src/main/java/org/grails/forge/feature/build/gradle/templates/dependencies.rocker.raw +++ b/grails-forge-core/src/main/java/org/grails/forge/feature/build/gradle/templates/dependencies.rocker.raw @@ -2,7 +2,6 @@ @import org.grails.forge.application.Project @import org.grails.forge.build.gradle.GradleBuild @import org.grails.forge.build.gradle.GradleDependency -@import org.grails.forge.feature.build.gradle.templates.dependency @import org.grails.forge.feature.Features @args ( @@ -16,15 +15,4 @@ dependencies { @for (GradleDependency dependency : gradleBuild.getDependencies()) { @dependency.toSnippet() } - -@if (features.contains("hamcrest")) { - @dependency.template("org.hamcrest","hamcrest", "testImplementation", null, false) -} - -@if (!features.contains("micronaut-http-client")) { - @dependency.template("io.micronaut", "micronaut-http-client", "testImplementation", null, false) -} -@if (features.contains("neo4j-bolt")) { - @dependency.template("org.neo4j.test", "neo4j-harness", "testRuntimeOnly", null, false) -} } diff --git a/grails-forge-core/src/main/java/org/grails/forge/feature/build/gradle/templates/dependency.rocker.raw b/grails-forge-core/src/main/java/org/grails/forge/feature/build/gradle/templates/dependency.rocker.raw deleted file mode 100644 index 2b5e40b4..00000000 --- a/grails-forge-core/src/main/java/org/grails/forge/feature/build/gradle/templates/dependency.rocker.raw +++ /dev/null @@ -1,3 +0,0 @@ -@args(String groupId, String artifactId, String scope, String version, boolean pom) - -@(pom ? scope + " platform" : scope) "@groupId:@artifactId@(version != null ? ":" + version : "")" diff --git a/grails-forge-core/src/main/java/org/grails/forge/feature/database/EmbeddedMongo.java b/grails-forge-core/src/main/java/org/grails/forge/feature/database/EmbeddedMongo.java index 148baccb..18f7e9df 100644 --- a/grails-forge-core/src/main/java/org/grails/forge/feature/database/EmbeddedMongo.java +++ b/grails-forge-core/src/main/java/org/grails/forge/feature/database/EmbeddedMongo.java @@ -83,6 +83,6 @@ public void apply(GeneratorContext generatorContext) { generatorContext.addDependency(Dependency.builder() .groupId("org.grails.plugins") .lookupArtifactId("embedded-mongodb") - .scope(Scope.TEST_RUNTIME)); + .scope(Scope.TEST_RUNTIME_ONLY)); } } diff --git a/grails-forge-core/src/main/java/org/grails/forge/feature/database/H2.java b/grails-forge-core/src/main/java/org/grails/forge/feature/database/H2.java index d6656799..085051cd 100644 --- a/grails-forge-core/src/main/java/org/grails/forge/feature/database/H2.java +++ b/grails-forge-core/src/main/java/org/grails/forge/feature/database/H2.java @@ -84,6 +84,6 @@ public void apply(GeneratorContext generatorContext) { generatorContext.addDependency(Dependency.builder() .groupId("com.h2database") .artifactId("h2") - .runtime()); + .runtimeOnly()); } } diff --git a/grails-forge-core/src/main/java/org/grails/forge/feature/database/HibernateGorm.java b/grails-forge-core/src/main/java/org/grails/forge/feature/database/HibernateGorm.java index f179b6c0..a8c28955 100644 --- a/grails-forge-core/src/main/java/org/grails/forge/feature/database/HibernateGorm.java +++ b/grails-forge-core/src/main/java/org/grails/forge/feature/database/HibernateGorm.java @@ -90,7 +90,7 @@ public void apply(GeneratorContext generatorContext) { generatorContext.addDependency(Dependency.builder() .groupId("org.apache.tomcat") .artifactId("tomcat-jdbc") - .runtime()); + .runtimeOnly()); } @Override diff --git a/grails-forge-core/src/main/java/org/grails/forge/feature/database/MySQL.java b/grails-forge-core/src/main/java/org/grails/forge/feature/database/MySQL.java index a513ffa6..b33e9fe9 100644 --- a/grails-forge-core/src/main/java/org/grails/forge/feature/database/MySQL.java +++ b/grails-forge-core/src/main/java/org/grails/forge/feature/database/MySQL.java @@ -88,6 +88,6 @@ public void apply(GeneratorContext generatorContext) { generatorContext.addDependency(Dependency.builder() .groupId("mysql") .artifactId("mysql-connector-java") - .runtime()); + .runtimeOnly()); } } diff --git a/grails-forge-core/src/main/java/org/grails/forge/feature/database/Neo4jGorm.java b/grails-forge-core/src/main/java/org/grails/forge/feature/database/Neo4jGorm.java index 51f829a8..59a7fddd 100644 --- a/grails-forge-core/src/main/java/org/grails/forge/feature/database/Neo4jGorm.java +++ b/grails-forge-core/src/main/java/org/grails/forge/feature/database/Neo4jGorm.java @@ -54,6 +54,11 @@ public void apply(GeneratorContext generatorContext) { .groupId("org.grails.plugins") .artifactId("neo4j") .compile()); + + generatorContext.addDependency(Dependency.builder() + .groupId("org.neo4j.test") + .artifactId("neo4j-harness") + .testRuntimeOnly()); } @Override diff --git a/grails-forge-core/src/main/java/org/grails/forge/feature/database/PostgreSQL.java b/grails-forge-core/src/main/java/org/grails/forge/feature/database/PostgreSQL.java index bf7a45f9..466079b7 100644 --- a/grails-forge-core/src/main/java/org/grails/forge/feature/database/PostgreSQL.java +++ b/grails-forge-core/src/main/java/org/grails/forge/feature/database/PostgreSQL.java @@ -89,6 +89,6 @@ public void apply(GeneratorContext generatorContext) { generatorContext.addDependency(Dependency.builder() .groupId("org.postgresql") .artifactId("postgresql") - .runtime()); + .runtimeOnly()); } } diff --git a/grails-forge-core/src/main/java/org/grails/forge/feature/database/SQLServer.java b/grails-forge-core/src/main/java/org/grails/forge/feature/database/SQLServer.java index 162ce4d4..ae78d6c3 100644 --- a/grails-forge-core/src/main/java/org/grails/forge/feature/database/SQLServer.java +++ b/grails-forge-core/src/main/java/org/grails/forge/feature/database/SQLServer.java @@ -88,6 +88,6 @@ public void apply(GeneratorContext generatorContext) { generatorContext.addDependency(Dependency.builder() .groupId("com.microsoft.sqlserver") .artifactId("mssql-jdbc") - .runtime()); + .runtimeOnly()); } } diff --git a/grails-forge-core/src/main/java/org/grails/forge/feature/database/TestContainers.java b/grails-forge-core/src/main/java/org/grails/forge/feature/database/TestContainers.java index 1d5b4f93..e7452d7e 100644 --- a/grails-forge-core/src/main/java/org/grails/forge/feature/database/TestContainers.java +++ b/grails-forge-core/src/main/java/org/grails/forge/feature/database/TestContainers.java @@ -83,7 +83,7 @@ private static Dependency.Builder testContainerTestDependency(@NonNull String ar return Dependency.builder() .groupId(TESTCONTAINERS_GROUP_ID) .artifactId(artifactId) - .test(); + .testImplementation(); } @NonNull diff --git a/grails-forge-core/src/main/java/org/grails/forge/feature/grails/GrailsWebConsole.java b/grails-forge-core/src/main/java/org/grails/forge/feature/grails/GrailsWebConsole.java index e1af6b1f..a455a3b4 100644 --- a/grails-forge-core/src/main/java/org/grails/forge/feature/grails/GrailsWebConsole.java +++ b/grails-forge-core/src/main/java/org/grails/forge/feature/grails/GrailsWebConsole.java @@ -52,7 +52,7 @@ public void apply(GeneratorContext generatorContext) { generatorContext.addDependency(Dependency.builder() .groupId("org.grails.plugins") .lookupArtifactId("grails-console") - .runtime()); + .runtimeOnly()); final Map config = generatorContext.getConfiguration(); config.put("environments.production.grails.plugin.console.enabled", false); diff --git a/grails-forge-core/src/main/java/org/grails/forge/feature/micronaut/MicronautInjectGroovy.java b/grails-forge-core/src/main/java/org/grails/forge/feature/micronaut/MicronautInjectGroovy.java index 19ebd9e6..7a98f307 100644 --- a/grails-forge-core/src/main/java/org/grails/forge/feature/micronaut/MicronautInjectGroovy.java +++ b/grails-forge-core/src/main/java/org/grails/forge/feature/micronaut/MicronautInjectGroovy.java @@ -51,6 +51,6 @@ public void apply(GeneratorContext generatorContext) { generatorContext.addDependency(Dependency.builder() .groupId("io.micronaut") .artifactId("micronaut-inject-groovy") - .test()); + .testImplementation()); } } diff --git a/grails-forge-core/src/main/java/org/grails/forge/feature/other/MicronautHttpClient.java b/grails-forge-core/src/main/java/org/grails/forge/feature/other/MicronautHttpClient.java index 13b0b45f..f0fe94f0 100644 --- a/grails-forge-core/src/main/java/org/grails/forge/feature/other/MicronautHttpClient.java +++ b/grails-forge-core/src/main/java/org/grails/forge/feature/other/MicronautHttpClient.java @@ -63,5 +63,10 @@ public void apply(GeneratorContext generatorContext) { .groupId("io.micronaut") .artifactId("micronaut-http-client") .compile()); + + generatorContext.addDependency(Dependency.builder() + .groupId("io.micronaut") + .artifactId("micronaut-http-client") + .testImplementation()); } } diff --git a/grails-forge-core/src/main/java/org/grails/forge/feature/test/AssertJ.java b/grails-forge-core/src/main/java/org/grails/forge/feature/test/AssertJ.java index 7c2654e8..aa77119a 100644 --- a/grails-forge-core/src/main/java/org/grails/forge/feature/test/AssertJ.java +++ b/grails-forge-core/src/main/java/org/grails/forge/feature/test/AssertJ.java @@ -50,7 +50,7 @@ public void apply(GeneratorContext generatorContext) { generatorContext.addDependency(Dependency.builder() .groupId("org.assertj") .artifactId("assertj-core") - .test()); + .testImplementation()); } @Override diff --git a/grails-forge-core/src/main/java/org/grails/forge/feature/test/Geb.java b/grails-forge-core/src/main/java/org/grails/forge/feature/test/Geb.java index 5f6a2e9c..575cd5d0 100644 --- a/grails-forge-core/src/main/java/org/grails/forge/feature/test/Geb.java +++ b/grails-forge-core/src/main/java/org/grails/forge/feature/test/Geb.java @@ -103,27 +103,27 @@ public void apply(GeneratorContext generatorContext) { generatorContext.addDependency(Dependency.builder() .groupId("org.grails.plugins") .artifactId("geb") - .test()); + .testImplementation()); Stream.of("api", "support", "remote-driver") .map(name -> "selenium-" + name) .forEach(name -> generatorContext.addDependency(Dependency.builder() .groupId("org.seleniumhq.selenium") .lookupArtifactId(name) - .test())); + .testImplementation())); generatorContext.addDependency(Dependency.builder() .groupId("org.seleniumhq.selenium") .lookupArtifactId("selenium-chrome-driver") - .testRuntime()); + .testRuntimeOnly()); generatorContext.addDependency(Dependency.builder() .groupId("org.seleniumhq.selenium") .lookupArtifactId("selenium-firefox-driver") - .testRuntime()); + .testRuntimeOnly()); generatorContext.addDependency(Dependency.builder() .groupId("org.seleniumhq.selenium") .lookupArtifactId("selenium-safari-driver") - .testRuntime()); + .testRuntimeOnly()); TestFramework testFramework = generatorContext.getTestFramework(); String integrationTestSourcePath = generatorContext.getIntegrationTestSourcePath("/{packagePath}/{className}"); diff --git a/grails-forge-core/src/main/java/org/grails/forge/feature/test/GormTestingSupport.java b/grails-forge-core/src/main/java/org/grails/forge/feature/test/GormTestingSupport.java index f7d09a42..e3d479fd 100644 --- a/grails-forge-core/src/main/java/org/grails/forge/feature/test/GormTestingSupport.java +++ b/grails-forge-core/src/main/java/org/grails/forge/feature/test/GormTestingSupport.java @@ -52,6 +52,6 @@ public void apply(GeneratorContext generatorContext) { generatorContext.addDependency(Dependency.builder() .groupId("org.grails") .artifactId("grails-gorm-testing-support") - .test()); + .testImplementation()); } } diff --git a/grails-forge-core/src/main/java/org/grails/forge/feature/test/GrailsWebTestingSupport.java b/grails-forge-core/src/main/java/org/grails/forge/feature/test/GrailsWebTestingSupport.java index 7b6dee35..7c8f2539 100644 --- a/grails-forge-core/src/main/java/org/grails/forge/feature/test/GrailsWebTestingSupport.java +++ b/grails-forge-core/src/main/java/org/grails/forge/feature/test/GrailsWebTestingSupport.java @@ -52,6 +52,6 @@ public void apply(GeneratorContext generatorContext) { generatorContext.addDependency(Dependency.builder() .groupId("org.grails") .artifactId("grails-web-testing-support") - .test()); + .testImplementation()); } } diff --git a/grails-forge-core/src/main/java/org/grails/forge/feature/test/Hamcrest.java b/grails-forge-core/src/main/java/org/grails/forge/feature/test/Hamcrest.java index 93abbdc1..55ee7006 100644 --- a/grails-forge-core/src/main/java/org/grails/forge/feature/test/Hamcrest.java +++ b/grails-forge-core/src/main/java/org/grails/forge/feature/test/Hamcrest.java @@ -17,6 +17,8 @@ import jakarta.inject.Singleton; import org.grails.forge.application.ApplicationType; +import org.grails.forge.application.generator.GeneratorContext; +import org.grails.forge.build.dependencies.Dependency; import org.grails.forge.feature.Category; import org.grails.forge.feature.Feature; @@ -52,4 +54,12 @@ public String getCategory() { public String getThirdPartyDocumentation() { return "https://hamcrest.org/JavaHamcrest/"; } + + @Override + public void apply(GeneratorContext generatorContext) { + generatorContext.addDependency(Dependency.builder() + .groupId("org.hamcrest") + .artifactId("hamcrest") + .testImplementation()); + } } diff --git a/grails-forge-core/src/main/java/org/grails/forge/feature/test/Junit.java b/grails-forge-core/src/main/java/org/grails/forge/feature/test/Junit.java index 702021af..29a81c49 100644 --- a/grails-forge-core/src/main/java/org/grails/forge/feature/test/Junit.java +++ b/grails-forge-core/src/main/java/org/grails/forge/feature/test/Junit.java @@ -52,7 +52,7 @@ public void doApply(GeneratorContext generatorContext) { generatorContext.addDependency(Dependency.builder() .groupId("org.junit.jupiter") .lookupArtifactId("junit-jupiter") - .test()); + .testImplementation()); } @Override diff --git a/grails-forge-core/src/main/java/org/grails/forge/feature/test/Mockito.java b/grails-forge-core/src/main/java/org/grails/forge/feature/test/Mockito.java index f5ab592c..00d96df7 100644 --- a/grails-forge-core/src/main/java/org/grails/forge/feature/test/Mockito.java +++ b/grails-forge-core/src/main/java/org/grails/forge/feature/test/Mockito.java @@ -69,6 +69,6 @@ public void apply(GeneratorContext generatorContext) { generatorContext.addDependency(Dependency.builder() .groupId("org.mockito") .artifactId("mockito-core") - .test()); + .testImplementation()); } } diff --git a/grails-forge-core/src/main/java/org/grails/forge/feature/test/Spock.java b/grails-forge-core/src/main/java/org/grails/forge/feature/test/Spock.java index 93f0dc57..8b94ff12 100644 --- a/grails-forge-core/src/main/java/org/grails/forge/feature/test/Spock.java +++ b/grails-forge-core/src/main/java/org/grails/forge/feature/test/Spock.java @@ -39,7 +39,7 @@ public void doApply(GeneratorContext generatorContext) { generatorContext.addDependency(Dependency.builder() .groupId("org.spockframework") .artifactId("spock-core") - .test() + .testImplementation() .build()); } diff --git a/grails-forge-core/src/main/java/org/grails/forge/feature/test/ViewsJsonTestingSupport.java b/grails-forge-core/src/main/java/org/grails/forge/feature/test/ViewsJsonTestingSupport.java index 38935ce4..3f65d627 100644 --- a/grails-forge-core/src/main/java/org/grails/forge/feature/test/ViewsJsonTestingSupport.java +++ b/grails-forge-core/src/main/java/org/grails/forge/feature/test/ViewsJsonTestingSupport.java @@ -52,6 +52,6 @@ public void apply(GeneratorContext generatorContext) { generatorContext.addDependency(Dependency.builder() .groupId("org.grails") .artifactId("views-json-testing-support") - .test()); + .testImplementation()); } } diff --git a/grails-forge-core/src/main/java/org/grails/forge/feature/view/Scaffolding.java b/grails-forge-core/src/main/java/org/grails/forge/feature/view/Scaffolding.java index 4b3054ad..a45f52a0 100644 --- a/grails-forge-core/src/main/java/org/grails/forge/feature/view/Scaffolding.java +++ b/grails-forge-core/src/main/java/org/grails/forge/feature/view/Scaffolding.java @@ -82,7 +82,7 @@ public void apply(GeneratorContext generatorContext) { generatorContext.addDependency(Dependency.builder() .groupId("org.fusesource.jansi") .lookupArtifactId("jansi") - .runtime()); + .runtimeOnly()); generatorContext.addDependency(Dependency.builder() .groupId("org.grails.plugins") diff --git a/grails-forge-core/src/main/java/org/grails/forge/feature/view/json/ViewJson.java b/grails-forge-core/src/main/java/org/grails/forge/feature/view/json/ViewJson.java index 20a99311..8ae90125 100644 --- a/grails-forge-core/src/main/java/org/grails/forge/feature/view/json/ViewJson.java +++ b/grails-forge-core/src/main/java/org/grails/forge/feature/view/json/ViewJson.java @@ -94,7 +94,7 @@ public void apply(GeneratorContext generatorContext) { generatorContext.addDependency(Dependency.builder() .groupId("org.grails") .artifactId("views-json-testing-support") - .test()); + .testImplementation()); generatorContext.addTemplate("application_index_gson", new RockerTemplate(getViewFolderPath() + "application/index.gson", index.template())); generatorContext.addTemplate("_errors_gson", new RockerTemplate(getViewFolderPath() + "errors/_errors.gson", _errors.template())); diff --git a/grails-forge-core/src/test/groovy/org/grails/forge/build/dependencies/GradleDependencyComparatorSpec.groovy b/grails-forge-core/src/test/groovy/org/grails/forge/build/dependencies/GradleDependencyComparatorSpec.groovy index 6dd7d5f7..b5c2c664 100644 --- a/grails-forge-core/src/test/groovy/org/grails/forge/build/dependencies/GradleDependencyComparatorSpec.groovy +++ b/grails-forge-core/src/test/groovy/org/grails/forge/build/dependencies/GradleDependencyComparatorSpec.groovy @@ -2,7 +2,6 @@ package org.grails.forge.build.dependencies import org.grails.forge.application.generator.GeneratorContext import org.grails.forge.build.gradle.GradleDependency -import org.grails.forge.options.Language import org.grails.forge.options.TestFramework import spock.lang.Specification @@ -22,11 +21,11 @@ class GradleDependencyComparatorSpec extends Specification { dep(Dependency.builder().groupId("io.micronaut.openapi").artifactId("micronaut-openapi").annotationProcessor(), ctx), dep(Dependency.builder().groupId("io.micronaut.sql").artifactId("micronaut-jdbc-hikari").compile(), ctx), dep(Dependency.builder().groupId("org.grails").artifactId("grails-console").console(), ctx), - dep(Dependency.builder().groupId("org.testcontainers").artifactId("testcontainers").test(), ctx), - dep(Dependency.builder().groupId("mysql").artifactId("mysql-connector-java").runtime(), ctx), - dep(Dependency.builder().groupId("org.testcontainers").artifactId("junit-jupiter").test(), ctx), - dep(Dependency.builder().groupId("org.testcontainers").artifactId("mysql").test(), ctx), - dep(Dependency.builder().groupId("ch.qos.logback").artifactId("logback-classic").runtime(), ctx)] + dep(Dependency.builder().groupId("org.testcontainers").artifactId("testcontainers").testImplementation(), ctx), + dep(Dependency.builder().groupId("mysql").artifactId("mysql-connector-java").runtimeOnly(), ctx), + dep(Dependency.builder().groupId("org.testcontainers").artifactId("junit-jupiter").testImplementation(), ctx), + dep(Dependency.builder().groupId("org.testcontainers").artifactId("mysql").testImplementation(), ctx), + dep(Dependency.builder().groupId("ch.qos.logback").artifactId("logback-classic").runtimeOnly(), ctx)] when: dependencies.sort(GradleDependency.COMPARATOR)