[Gradle] KT-65528 Convert KGP IT - JVM with Java

- refactor `getFilePathsSet()` util function
- replace `javaSourceRootForCompilation()` util with simpler if statements
- extract Dagger version to `TestVersions.ThirdPartyDependencies`

^KT-65528 In Progress

Merge-request: KT-MR-16065
Merged-by: Adam Semenenko <adam.semenenko@jetbrains.com>
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt
index 702a621..ac5ebb9 100644
--- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt
@@ -4,12 +4,11 @@
  */
 package org.jetbrains.kotlin.gradle
 
-import org.gradle.util.GradleVersion
 import org.jetbrains.kotlin.cli.common.arguments.K2NativeCompilerArguments
 import org.jetbrains.kotlin.cli.common.arguments.parseCommandLineArguments
 import org.jetbrains.kotlin.gradle.plugin.ProjectLocalConfigurations
 import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinToolingDiagnostics
-import org.jetbrains.kotlin.gradle.testbase.TestVersions
+import org.jetbrains.kotlin.gradle.testbase.MPPNativeTargets
 import org.jetbrains.kotlin.gradle.testbase.assertHasDiagnostic
 import org.jetbrains.kotlin.gradle.testbase.assertNoDiagnostic
 import org.jetbrains.kotlin.gradle.util.isWindows
@@ -195,205 +194,12 @@
     }
 
     @Test
-    @Ignore // KT-60745
-    fun testJvmWithJavaEquivalence() = doTestJvmWithJava(testJavaSupportInJvmTargets = false)
+    fun testMavenPublishAppliedBeforeMultiplatformPlugin() =
+        with(transformNativeTestProject("sample-lib", directoryPrefix = "new-mpp-lib-and-app")) {
+            gradleBuildScript().modify { "apply plugin: 'maven-publish'\n$it" }
 
-    @Test
-    fun testJavaSupportInJvmTargets() = doTestJvmWithJava(testJavaSupportInJvmTargets = true)
-
-    private fun doTestJvmWithJava(testJavaSupportInJvmTargets: Boolean) =
-        with(Project("sample-lib", directoryPrefix = "new-mpp-lib-and-app")) {
-            val embeddedProject = Project("sample-lib-gradle-kotlin-dsl", directoryPrefix = "new-mpp-lib-and-app")
-            embedProject(embeddedProject)
-            gradleProperties().apply {
-                configureJvmMemory()
-            }
-
-            lateinit var classesWithoutJava: Set<String>
-
-            fun getFilePathsSet(inDirectory: String): Set<String> {
-                val dir = projectDir.resolve(inDirectory)
-                return dir.walk().filter { it.isFile }.map { it.relativeTo(dir).invariantSeparatorsPath }.toSet()
-            }
-
-            gradleBuildScript(embeddedProject.projectName).modify {
-                it.replace("val shouldBeJs = true", "val shouldBeJs = false")
-            }
-
-            gradleBuildScript().modify {
-                it.replace("def shouldBeJs = true", "def shouldBeJs = false")
-            }
-
-            build("assemble") {
+            build {
                 assertSuccessful()
-                classesWithoutJava = getFilePathsSet("build/classes")
-            }
-
-            gradleBuildScript().modify { script ->
-                buildString {
-                    appendLine(
-                        """
-                        |apply plugin: 'com.github.johnrengelman.shadow'
-                        |apply plugin: 'application'
-                        |apply plugin: 'kotlin-kapt' // Check that Kapt works, generates and compiles sources
-                        """.trimMargin()
-                    )
-
-                    if (testJavaSupportInJvmTargets) {
-                        appendLine(script)
-                        appendLine(
-                            """
-                            |kotlin.jvm("jvm6") {
-                            |  withJava()
-                            |  withJava() // also check that the function is idempotent
-                            |}
-                            """.trimMargin()
-                        )
-                    } else {
-                        appendLine(
-                            script
-                                .replace("presets.jvm", "presets.jvmWithJava")
-                                .replace("jvm(", "targetFromPreset(presets.jvmWithJava, ")
-                        )
-                    }
-
-                    appendLine(
-                        """
-                        |buildscript {
-                        |    repositories {
-                        |        maven { url 'https://plugins.gradle.org/m2/' }
-                        |    }
-                        |    dependencies {
-                        |        classpath 'com.github.johnrengelman:shadow:${TestVersions.ThirdPartyDependencies.SHADOW_PLUGIN_VERSION}'
-                        |    }
-                        |}
-                        |
-                        |application {
-                        |    mainClass = 'com.example.lib.CommonKt'
-                        |}
-                        |
-                        |dependencies {
-                        |    jvm6MainImplementation("com.google.dagger:dagger:2.24")
-                        |    kapt("com.google.dagger:dagger-compiler:2.24")
-                        |    kapt(project(":sample-lib-gradle-kotlin-dsl"))
-                        |    
-                        |    // also check incremental Kapt class structure configurations, KT-33105
-                        |    jvm6MainImplementation(project(":sample-lib-gradle-kotlin-dsl")) 
-                        |}
-                        """.trimMargin()
-                    )
-                }
-            }
-            // also check incremental Kapt class structure configurations, KT-33105
-            projectDir.resolve("gradle.properties").appendText("\nkapt.incremental.apt=true")
-
-            // Check Kapt:
-            projectDir.resolve("src/jvm6Main/kotlin/Main.kt").appendText(
-                "\n" + """
-                interface Iface
-                
-                @dagger.Module
-                object Module {
-                    @JvmStatic @dagger.Provides
-                    fun provideHeater(): Iface = object : Iface { }
-                }
-            """.trimIndent()
-            )
-
-            fun javaSourceRootForCompilation(compilationName: String) =
-                if (testJavaSupportInJvmTargets) "src/jvm6${compilationName.replaceFirstChar { if (it.isLowerCase()) it.titlecase(Locale.getDefault()) else it.toString() }}/java" else "src/$compilationName/java"
-
-            val javaMainSrcDir = javaSourceRootForCompilation("main")
-            val javaTestSrcDir = javaSourceRootForCompilation("test")
-
-            projectDir.resolve(javaMainSrcDir).apply {
-                mkdirs()
-                // Check that Java can access the dependencies (kotlin-stdlib):
-                resolve("JavaClassInJava.java").writeText(
-                    """
-                    package com.example.lib;
-                    import kotlin.sequences.Sequence;
-                    class JavaClassInJava {
-                        Sequence<String> makeSequence() { throw new UnsupportedOperationException(); }
-                    }
-                    """.trimIndent()
-                )
-
-                // Add a Kotlin source file in the Java source root and check that it is compiled:
-                resolve("KotlinClassInJava.kt").writeText(
-                    """
-                    package com.example.lib
-                    class KotlinClassInJava
-                    """.trimIndent()
-                )
-            }
-
-            projectDir.resolve(javaTestSrcDir).apply {
-                mkdirs()
-                resolve("JavaTest.java").writeText(
-                    """
-                    package com.example.lib;
-                    import org.junit.*;
-                    public class JavaTest {
-                        @Test
-                        public void testAccessKotlin() {
-                            MainKt.expectedFun();
-                            MainKt.x();
-                            new KotlinClassInJava();
-                            new JavaClassInJava();
-                        }
-                    }
-                    """.trimIndent()
-                )
-            }
-
-            build(
-                "clean", "build", "run", "shadowJar",
-                options = defaultBuildOptions().suppressDeprecationWarningsOn("KT-66542: withJava() produces deprecation warning") {
-                    GradleVersion.version(chooseWrapperVersionOrFinishTest()) >= GradleVersion.version(TestVersions.Gradle.G_8_7)
-                }
-            ) {
-                assertSuccessful()
-                val expectedMainClasses =
-                    classesWithoutJava + setOf(
-                        // classes for Kapt test:
-                        "java/main/com/example/lib/Module_ProvideHeaterFactory.class",
-                        "kotlin/jvm6/main/com/example/lib/Module\$provideHeater\$1.class",
-                        "kotlin/jvm6/main/com/example/lib/Iface.class",
-                        "kotlin/jvm6/main/com/example/lib/Module.class",
-                        // other added classes:
-                        "kotlin/jvm6/main/com/example/lib/KotlinClassInJava.class",
-                        "java/main/com/example/lib/JavaClassInJava.class",
-                        "java/test/com/example/lib/JavaTest.class"
-                    )
-                val actualClasses = getFilePathsSet("build/classes")
-                Assert.assertEquals(expectedMainClasses, actualClasses)
-
-                val jvmTestTaskName = if (testJavaSupportInJvmTargets) "jvm6Test" else "test"
-                assertTasksExecuted(":$jvmTestTaskName")
-
-                if (testJavaSupportInJvmTargets) {
-                    assertFileExists("build/reports/tests/allTests/classes/com.example.lib.JavaTest.html")
-                }
-
-                if (testJavaSupportInJvmTargets) {
-                    assertNoDiagnostic(KotlinToolingDiagnostics.DeprecatedJvmWithJavaPresetDiagnostic)
-                } else {
-                    assertHasDiagnostic(KotlinToolingDiagnostics.DeprecatedJvmWithJavaPresetDiagnostic)
-                }
-
-                assertTasksExecuted(":run")
-                assertContains(">>> Common.kt >>> main()")
-
-                assertTasksExecuted(":shadowJar")
-                val entries = ZipFile(projectDir.resolve("build/libs/sample-lib-1.0-all.jar")).use { zip ->
-                    zip.entries().asSequence().map { it.name }.toSet()
-                }
-                assertTrue { "kotlin/Pair.class" in entries }
-                assertTrue { "com/example/lib/CommonKt.class" in entries }
-                assertTrue { "com/example/lib/MainKt.class" in entries }
-                assertTrue { "com/example/lib/JavaClassInJava.class" in entries }
-                assertTrue { "com/example/lib/KotlinClassInJava.class" in entries }
             }
         }
 
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/MppJvmWithJavaIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/MppJvmWithJavaIT.kt
new file mode 100644
index 0000000..e3ed819
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/MppJvmWithJavaIT.kt
@@ -0,0 +1,248 @@
+/*
+ * Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
+ * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
+ */
+package org.jetbrains.kotlin.gradle.mpp
+
+import org.gradle.util.GradleVersion
+import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinToolingDiagnostics.DeprecatedJvmWithJavaPresetDiagnostic
+import org.jetbrains.kotlin.gradle.testbase.*
+import org.jetbrains.kotlin.test.TestMetadata
+import org.junit.jupiter.api.Assertions.assertEquals
+import org.junit.jupiter.api.Disabled
+import java.nio.file.Path
+import java.util.zip.ZipFile
+import kotlin.io.path.*
+import kotlin.test.assertContains
+
+@MppGradlePluginTests
+class MppJvmWithJavaIT : KGPBaseTest() {
+
+    @GradleTest
+    @TestMetadata(value = "new-mpp-lib-and-app")
+    @Disabled("KT-60745")
+    fun testJvmWithJavaEquivalence(
+        gradleVersion: GradleVersion,
+    ): Unit = doTestJvmWithJava(gradleVersion, testJavaSupportInJvmTargets = false)
+
+    @GradleTest
+    @GradleTestVersions(minVersion = "8.0") // Shadow requires Gradle 8.0+
+    @TestMetadata(value = "new-mpp-lib-and-app")
+    fun testJavaSupportInJvmTargets(
+        gradleVersion: GradleVersion,
+    ): Unit = doTestJvmWithJava(gradleVersion, testJavaSupportInJvmTargets = true)
+
+    private fun doTestJvmWithJava(
+        gradleVersion: GradleVersion,
+        testJavaSupportInJvmTargets: Boolean,
+    ) {
+        project(
+            projectName = "new-mpp-lib-and-app/sample-lib",
+            gradleVersion = gradleVersion,
+        ) {
+            includeOtherProjectAsSubmodule(
+                otherProjectName = "sample-lib-gradle-kotlin-dsl",
+                pathPrefix = "new-mpp-lib-and-app",
+            )
+            val subproject = subProject("sample-lib-gradle-kotlin-dsl")
+
+            buildGradle.modify {
+                it.replace("val shouldBeJs = true", "val shouldBeJs = false")
+            }
+
+            subproject.buildGradleKts.modify {
+                it
+                    .replace("val shouldBeJs = true", "val shouldBeJs = false")
+                    // TODO KT-65528 remove pluginMarkerVersion here and from the actual build.gradle
+                    //      when all KGP tests have been updated to use the new test DSL
+                    .replace(".version(\"<pluginMarkerVersion>\")", "")
+            }
+
+            val classesWithoutJava: Set<String> = buildSet {
+                build("assemble") {
+                    addAll(projectPath.resolve("build/classes").relativePathsOfDirectoryContents())
+                }
+            }
+
+            buildGradle.modify { script ->
+                buildString {
+                    appendLine(
+                        """
+                        |apply plugin: 'com.github.johnrengelman.shadow'
+                        |apply plugin: 'application'
+                        |apply plugin: 'kotlin-kapt' // Check that Kapt works, generates and compiles sources
+                        """.trimMargin()
+                    )
+
+                    if (testJavaSupportInJvmTargets) {
+                        appendLine(script)
+                        appendLine(
+                            """
+                            |kotlin.jvm("jvm6") {
+                            |  withJava()
+                            |  withJava() // also check that the function is idempotent
+                            |}
+                            """.trimMargin()
+                        )
+                    } else {
+                        appendLine(
+                            script
+                                .replace("presets.jvm", "presets.jvmWithJava")
+                                .replace("jvm(", "targetFromPreset(presets.jvmWithJava, ")
+                        )
+                    }
+
+                    appendLine(
+                        """
+                        |buildscript {
+                        |    repositories {
+                        |        maven { url 'https://plugins.gradle.org/m2/' }
+                        |    }
+                        |    dependencies {
+                        |        classpath 'com.github.johnrengelman:shadow:${TestVersions.ThirdPartyDependencies.SHADOW_PLUGIN_VERSION}'
+                        |    }
+                        |}
+                        |
+                        |application {
+                        |    mainClass = 'com.example.lib.CommonKt'
+                        |}
+                        |
+                        |dependencies {
+                        |    jvm6MainImplementation("com.google.dagger:dagger:${TestVersions.ThirdPartyDependencies.GOOGLE_DAGGER}")
+                        |    kapt("com.google.dagger:dagger-compiler:2.24")
+                        |    kapt(project(":sample-lib-gradle-kotlin-dsl"))
+                        |    
+                        |    // also check incremental Kapt class structure configurations, KT-33105
+                        |    jvm6MainImplementation(project(":sample-lib-gradle-kotlin-dsl")) 
+                        |}
+                        """.trimMargin()
+                    )
+                }
+            }
+
+            // also check incremental Kapt class structure configurations, KT-33105
+            gradleProperties.append("kapt.incremental.apt=true")
+
+            // Check Kapt:
+            projectPath.resolve("src/jvm6Main/kotlin/Main.kt")
+                .append(
+                    """
+                    |interface Iface
+                    |
+                    |@dagger.Module
+                    |object Module {
+                    |    @JvmStatic @dagger.Provides
+                    |    fun provideHeater(): Iface = object : Iface { }
+                    |}
+                    """.trimMargin()
+                )
+
+            val javaMainSrcDir = if (testJavaSupportInJvmTargets) "src/jvm6Main/java" else "src/main/java"
+            val javaTestSrcDir = if (testJavaSupportInJvmTargets) "src/jvm6Test/java" else "src/test/java"
+
+            projectPath.resolve(javaMainSrcDir).apply {
+                createDirectories()
+
+                // Check that Java can access the dependencies (kotlin-stdlib):
+                resolve("JavaClassInJava.java").writeText(
+                    """
+                    |package com.example.lib;
+                    |import kotlin.sequences.Sequence;
+                    |class JavaClassInJava {
+                    |    Sequence<String> makeSequence() { throw new UnsupportedOperationException(); }
+                    |}
+                    """.trimMargin()
+                )
+
+                // Add a Kotlin source file in the Java source root and check that it is compiled:
+                resolve("KotlinClassInJava.kt").writeText(
+                    """
+                    |package com.example.lib
+                    |class KotlinClassInJava
+                    """.trimMargin()
+                )
+            }
+
+            projectPath.resolve(javaTestSrcDir).apply {
+                createDirectories()
+
+                resolve("JavaTest.java").writeText(
+                    """
+                    |package com.example.lib;
+                    |import org.junit.*;
+                    |public class JavaTest {
+                    |    @Test
+                    |    public void testAccessKotlin() {
+                    |        MainKt.expectedFun();
+                    |        MainKt.x();
+                    |        new KotlinClassInJava();
+                    |        new JavaClassInJava();
+                    |    }
+                    |}
+                    """.trimMargin()
+                )
+            }
+
+            build(
+                "clean", "build", "run", "shadowJar",
+                buildOptions = defaultBuildOptions
+                    .suppressDeprecationWarningsOn("KT-66542: withJava() produces deprecation warning") {
+                        gradleVersion >= GradleVersion.version(TestVersions.Gradle.G_8_7)
+                    }
+            ) {
+                val expectedMainClasses =
+                    classesWithoutJava + setOf(
+                        // classes for Kapt test:
+                        "java/main/com/example/lib/Module_ProvideHeaterFactory.class",
+                        "kotlin/jvm6/main/com/example/lib/Module\$provideHeater\$1.class",
+                        "kotlin/jvm6/main/com/example/lib/Iface.class",
+                        "kotlin/jvm6/main/com/example/lib/Module.class",
+                        // other added classes:
+                        "kotlin/jvm6/main/com/example/lib/KotlinClassInJava.class",
+                        "java/main/com/example/lib/JavaClassInJava.class",
+                        "java/test/com/example/lib/JavaTest.class"
+                    )
+
+                val actualClasses = projectPath.resolve("build/classes").relativePathsOfDirectoryContents()
+                assertEquals(expectedMainClasses.sorted().joinToString("\n"), actualClasses.sorted().joinToString("\n"))
+
+                val jvmTestTaskName = if (testJavaSupportInJvmTargets) "jvm6Test" else "test"
+                assertTasksExecuted(":$jvmTestTaskName")
+
+                if (testJavaSupportInJvmTargets) {
+                    assertFileInProjectExists("build/reports/tests/allTests/classes/com.example.lib.JavaTest.html")
+                }
+
+                if (testJavaSupportInJvmTargets) {
+                    assertNoDiagnostic(DeprecatedJvmWithJavaPresetDiagnostic)
+                } else {
+                    assertHasDiagnostic(DeprecatedJvmWithJavaPresetDiagnostic)
+                }
+
+                assertTasksExecuted(":run")
+                assertOutputContains(">>> Common.kt >>> main()")
+
+                assertTasksExecuted(":shadowJar")
+
+                val entries = ZipFile(projectPath.resolve("build/libs/sample-lib-1.0-all.jar").toFile()).use { zip ->
+                    zip.entries().asSequence().map { it.name }.toSet()
+                }
+                assertContains(entries, "kotlin/Pair.class")
+                assertContains(entries, "com/example/lib/CommonKt.class")
+                assertContains(entries, "com/example/lib/MainKt.class")
+                assertContains(entries, "com/example/lib/JavaClassInJava.class")
+                assertContains(entries, "com/example/lib/KotlinClassInJava.class")
+            }
+        }
+    }
+
+    companion object {
+        /** Get the relative paths of all files within this directory. */
+        private fun Path.relativePathsOfDirectoryContents(): Set<String> {
+            return walk()
+                .filter { it.isRegularFile() }
+                .map { it.relativeTo(this@relativePathsOfDirectoryContents).invariantSeparatorsPathString }
+                .toSet()
+        }
+    }
+}
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/TestVersions.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/TestVersions.kt
index 8a37997..5be34aa 100644
--- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/TestVersions.kt
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/TestVersions.kt
@@ -92,6 +92,7 @@
 
     object ThirdPartyDependencies {
         const val SHADOW_PLUGIN_VERSION = "8.1.1"
+        const val GOOGLE_DAGGER = "2.24"
         const val GRADLE_ENTERPRISE_PLUGIN_VERSION = "3.13.4"
         const val KOTLINX_ATOMICFU = "0.23.2"
     }
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/testDsl.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/testDsl.kt
index bc53f30..490570c 100644
--- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/testDsl.kt
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/testDsl.kt
@@ -400,10 +400,14 @@
 
     /**
      * Includes another project as a submodule in the current project.
+     *
+     * - Copies the other project to a directory inside this project.
+     * - Updates this project's `settings.gradle(.kts)` with `include(":$newSubmoduleName")`
+     *
      * @param otherProjectName The name of the other project to include as a submodule.
      * @param pathPrefix An optional prefix to prepend to the submodule's path. Defaults to an empty string.
-     * @param newSubmoduleName An optional new name for the submodule. Defaults to the otherProjectName.
-     * @param isKts Whether to update a .kts settings file instead of a .gradle settings file. Defaults to false.
+     * @param newSubmoduleName An optional new name for the submodule. Defaults to [otherProjectName].
+     * @param isKts Whether to update a `settings.gradle.kts` instead of a `settings.gradle` file. Defaults to `false`.
      */
     fun includeOtherProjectAsSubmodule(
         otherProjectName: String,
@@ -985,4 +989,4 @@
 /**
  * Resolves the temporary local repository path for the test with specified Gradle version.
  */
-fun KGPBaseTest.defaultLocalRepo(gradleVersion: GradleVersion) = workingDir.resolve(gradleVersion.version).resolve("repo")
\ No newline at end of file
+fun KGPBaseTest.defaultLocalRepo(gradleVersion: GradleVersion) = workingDir.resolve(gradleVersion.version).resolve("repo")
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-app-gradle-kotlin-dsl/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-app-gradle-kotlin-dsl/build.gradle.kts
index e063aa8..f535e7b 100644
--- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-app-gradle-kotlin-dsl/build.gradle.kts
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-app-gradle-kotlin-dsl/build.gradle.kts
@@ -1,6 +1,6 @@
 plugins {
-	id("org.jetbrains.kotlin.multiplatform").version("<pluginMarkerVersion>")
-	id("maven-publish")
+    id("org.jetbrains.kotlin.multiplatform").version("<pluginMarkerVersion>")
+    id("maven-publish")
 }
 
 group = "com.example"
@@ -12,17 +12,17 @@
 }
 
 kotlin {
-	val jvm6 = jvm("jvm6") {
+    val jvm6 = jvm("jvm6") {
         attributes.attribute(TargetJvmVersion.TARGET_JVM_VERSION_ATTRIBUTE, 6)
     }
-	val jvm8 = jvm("jvm8") {
+    val jvm8 = jvm("jvm8") {
         attributes.attribute(TargetJvmVersion.TARGET_JVM_VERSION_ATTRIBUTE, 8)
-		compilations["main"].kotlinOptions.jvmTarget = "1.8"
-	}
-	val nodeJs = js("nodeJs") {
+        compilations["main"].kotlinOptions.jvmTarget = "1.8"
+    }
+    val nodeJs = js("nodeJs") {
         nodejs()
     }
-	val linux64 = linuxX64("linux64")
+    val linux64 = linuxX64("linux64")
 
     wasmJs {
     }
@@ -68,7 +68,7 @@
 }
 
 tasks.create("resolveRuntimeDependencies", DefaultTask::class.java) {
-    doFirst { 
+    doFirst {
         // KT-26301
         val configName = kotlin.jvm("jvm6").compilations["main"].runtimeDependencyConfigurationName
         configurations[configName].resolve()