Add an IT for publication of multiplatform resources

^KT-65540
diff --git a/build-common/test/org/jetbrains/kotlin/incremental/testingUtils/classFilesComparison.kt b/build-common/test/org/jetbrains/kotlin/incremental/testingUtils/classFilesComparison.kt
index 054e4a6e..adc6de7 100644
--- a/build-common/test/org/jetbrains/kotlin/incremental/testingUtils/classFilesComparison.kt
+++ b/build-common/test/org/jetbrains/kotlin/incremental/testingUtils/classFilesComparison.kt
@@ -46,7 +46,12 @@
 // Set this to true if you want to dump all bytecode (test will fail in this case)
 private val DUMP_ALL = System.getProperty("comparison.dump.all") == "true"
 
-fun assertEqualDirectories(expected: File, actual: File, forgiveExtraFiles: Boolean) {
+fun assertEqualDirectories(
+    expected: File,
+    actual: File,
+    forgiveExtraFiles: Boolean,
+    includeFiles: (File) -> (Boolean) = { true },
+) {
     val pathsInExpected = getAllRelativePaths(expected)
     val pathsInActual = getAllRelativePaths(actual)
 
@@ -55,8 +60,8 @@
             .filter { DUMP_ALL || !Arrays.equals(File(expected, it).readBytes(), File(actual, it).readBytes()) }
             .sorted()
 
-    val expectedString = getDirectoryString(expected, changedPaths)
-    val actualString = getDirectoryString(actual, changedPaths)
+    val expectedString = getDirectoryString(expected, changedPaths, includeFiles)
+    val actualString = getDirectoryString(actual, changedPaths, includeFiles)
 
     if (DUMP_ALL) {
         Assert.assertEquals(expectedString, actualString + " ")
@@ -92,7 +97,11 @@
 
 private const val DIR_ROOT_PLACEHOLDER = "<DIR_ROOT_PLACEHOLDER>"
 
-private fun getDirectoryString(dir: File, interestingPaths: List<String>): String {
+private fun getDirectoryString(
+    dir: File,
+    interestingPaths: List<String>,
+    includeFiles: (File) -> (Boolean),
+): String {
     val buf = StringBuilder()
     val p = Printer(buf)
 
@@ -100,7 +109,7 @@
     fun addDirContent(dir: File) {
         p.pushIndent()
 
-        val listFiles = dir.listFiles()
+        val listFiles = dir.listFiles().filter { includeFiles(it) }
         assertNotNull("$dir does not exist", listFiles)
 
         val children = listFiles!!.sortedWith(compareBy({ it.isDirectory }, { it.name }))
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/resources/MultiplatformResourcesPublicationIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/resources/MultiplatformResourcesPublicationIT.kt
new file mode 100644
index 0000000..1699a7d
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/resources/MultiplatformResourcesPublicationIT.kt
@@ -0,0 +1,172 @@
+package org.jetbrains.kotlin.gradle.mpp.resources
+
+import java.nio.file.Files
+import java.nio.file.Paths
+import java.nio.file.StandardCopyOption
+import org.gradle.util.GradleVersion
+import org.jetbrains.kotlin.gradle.testbase.*
+import org.jetbrains.kotlin.gradle.util.capitalize
+import org.jetbrains.kotlin.incremental.testingUtils.assertEqualDirectories
+import org.junit.jupiter.api.DisplayName
+import java.nio.file.Path
+import java.util.zip.ZipFile
+
+@MppGradlePluginTests
+@DisplayName("Test multiplatform resources publication")
+class MultiplatformResourcesPublicationIT : KGPBaseTest() {
+
+    @DisplayName("Multiplatform resources publication for Android target with release build type")
+    @AndroidTestVersions(minVersion = TestVersions.AGP.AGP_73)
+    @GradleAndroidTest
+    fun testAndroidReleaseResourcesPublication(
+        gradleVersion: GradleVersion,
+        androidVersion: String,
+        providedJdk: JdkVersions.ProvidedJdk,
+    ) {
+        project(
+            "multiplatformResources/publication",
+            gradleVersion,
+            buildJdk = providedJdk.location,
+        ) {
+            buildWithAGPVersion(
+                ":publishAndroidReleasePublicationToMavenRepository",
+                androidVersion,
+            )
+            val aarExpansion = projectPath.resolve("unzippedAar")
+            unzip(
+                "build/repo/test/publication-android/1.0/publication-android-1.0.aar",
+                aarExpansion,
+                filesStartingWith = "classes.jar"
+            )
+            compareEmbeddedResources(
+                "unzippedAar/classes.jar",
+                reference = "androidMain"
+            )
+        }
+    }
+
+    @DisplayName("Multiplatform resources publication for jvm target")
+    @GradleAndroidTest
+    fun testJvmResourcesPublication(
+        gradleVersion: GradleVersion,
+        androidVersion: String,
+        providedJdk: JdkVersions.ProvidedJdk,
+    ) {
+        testEmbeddedResources(
+            gradleVersion,
+            androidVersion,
+            providedJdk,
+            publicationTask = ":publishJvmPublicationToMavenRepository",
+            publishedArchive = "build/repo/test/publication-jvm/1.0/publication-jvm-1.0.jar",
+            reference = "jvm",
+        )
+    }
+
+    @DisplayName("Multiplatform resources publication for Native target")
+    @GradleAndroidTest
+    fun testNativeTargetResourcesPublication(
+        gradleVersion: GradleVersion,
+        androidVersion: String,
+        providedJdk: JdkVersions.ProvidedJdk,
+    ) {
+        testEmbeddedResources(
+            gradleVersion,
+            androidVersion,
+            providedJdk,
+            publicationTask = ":publishLinuxX64PublicationToMavenRepository",
+            publishedArchive = "build/repo/test/publication-linuxx64/1.0/publication-linuxx64-1.0-kotlin_resources.zip",
+            reference = "linuxX64",
+        )
+    }
+
+    @DisplayName("Multiplatform resources publication for wasm js target")
+    @GradleAndroidTest
+    fun testWasmJsTargetResourcesPublication(
+        gradleVersion: GradleVersion,
+        androidVersion: String,
+        providedJdk: JdkVersions.ProvidedJdk,
+    ) {
+        testEmbeddedResources(
+            gradleVersion,
+            androidVersion,
+            providedJdk,
+            publicationTask = ":publishWasmJsPublicationToMavenRepository",
+            publishedArchive = "build/repo/test/publication-wasm-js/1.0/publication-wasm-js-1.0-kotlin_resources.zip",
+            reference = "wasmJs",
+        )
+    }
+
+    private fun testEmbeddedResources(
+        gradleVersion: GradleVersion,
+        androidVersion: String,
+        providedJdk: JdkVersions.ProvidedJdk,
+        publicationTask: String,
+        publishedArchive: String,
+        reference: String,
+    ) {
+        project(
+            "multiplatformResources/publication",
+            gradleVersion,
+            buildJdk = providedJdk.location,
+        ) {
+            buildWithAGPVersion(
+                publicationTask,
+                androidVersion,
+            )
+            compareEmbeddedResources(
+                publishedArchive,
+                reference
+            )
+        }
+    }
+
+    private fun TestProject.buildWithAGPVersion(
+        task: String,
+        androidVersion: String,
+    ) {
+        build(
+            task,
+            buildOptions = defaultBuildOptions.copy(androidVersion = androidVersion)
+        )
+    }
+
+    private fun TestProject.compareEmbeddedResources(
+        inputZip: String,
+        reference: String,
+    ) {
+        val publishedResources = projectPath.resolve("published/${reference}")
+        unzip(
+            inputZip = inputZip,
+            outputDir = publishedResources,
+            filesStartingWith = "embed",
+        )
+        val referenceResources = projectPath.resolve("reference/$reference")
+        assertDirectoryExists(publishedResources)
+        assertDirectoryExists(referenceResources)
+        assertEqualDirectories(
+            publishedResources.toFile(),
+            referenceResources.toFile(),
+            forgiveExtraFiles = false,
+            includeFiles = { !it.name.startsWith(".") }
+        )
+    }
+
+    private fun TestProject.unzip(
+        inputZip: String,
+        outputDir: Path,
+        filesStartingWith: String,
+    ) {
+        ZipFile(projectPath.resolve(inputZip).toFile()).use {
+            it.entries().asSequence().filter { it.name.startsWith(filesStartingWith) && !it.isDirectory }.forEach { entry ->
+                val outputFile = outputDir.resolve(Paths.get(entry.name))
+                if (!outputFile.parent.toFile().exists())
+                    Files.createDirectories(outputFile.parent)
+
+                it.getInputStream(entry).use { input ->
+                    Files.copy(input, outputFile, StandardCopyOption.REPLACE_EXISTING)
+                }
+            }
+        }
+    }
+
+}
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/build.gradle.kts
new file mode 100644
index 0000000..3d93f87
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/build.gradle.kts
@@ -0,0 +1,63 @@
+@file:OptIn(InternalKotlinGradlePluginApi::class)
+
+import org.jetbrains.kotlin.gradle.InternalKotlinGradlePluginApi
+import org.jetbrains.kotlin.gradle.plugin.mpp.resources.KotlinTargetResourcesPublication
+
+group = "test"
+version = "1.0"
+
+plugins {
+    id("com.android.library")
+    kotlin("multiplatform")
+    `maven-publish`
+}
+
+repositories {
+    google()
+    mavenCentral()
+    mavenLocal()
+}
+
+kotlin {
+    val publication = kotlin.ext.get(
+        KotlinTargetResourcesPublication.EXTENSION_NAME
+    ) as KotlinTargetResourcesPublication
+
+    listOf(
+        androidTarget {
+            publishAllLibraryVariants()
+            compilations.all {
+                kotlinOptions.jvmTarget = "1.8"
+            }
+        },
+        jvm(),
+        linuxX64(),
+        wasmJs(),
+    ).forEach { target ->
+        publication.publishResourcesAsKotlinComponent(
+            target,
+            { sourceSet ->
+                KotlinTargetResourcesPublication.ResourceRoot(
+                    absolutePath = project.provider { project.file("src/${sourceSet.name}/multiplatformResources") },
+                    includes = emptyList(),
+                    excludes = emptyList()
+                )
+            },
+            provider { File("embed/inside") }
+        )
+    }
+}
+
+publishing {
+    repositories {
+        maven("${buildDir}/repo")
+    }
+}
+
+android {
+    namespace = "test"
+    compileSdk = 34
+    defaultConfig {
+        minSdk = 24
+    }
+}
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/reference/androidMain/embed/inside/inCommon b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/reference/androidMain/embed/inside/inCommon
new file mode 100644
index 0000000..7cbcb79
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/reference/androidMain/embed/inside/inCommon
@@ -0,0 +1 @@
+inCommon
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/reference/androidMain/embed/inside/inner/innerInCommon b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/reference/androidMain/embed/inside/inner/innerInCommon
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/reference/androidMain/embed/inside/inner/innerInCommon
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/reference/androidMain/embed/inside/inner/platformOverride b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/reference/androidMain/embed/inside/inner/platformOverride
new file mode 100644
index 0000000..cb2b6da
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/reference/androidMain/embed/inside/inner/platformOverride
@@ -0,0 +1 @@
+androidMain
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/reference/androidMain/embed/inside/onlyInAndroidMain b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/reference/androidMain/embed/inside/onlyInAndroidMain
new file mode 100644
index 0000000..6d8df51
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/reference/androidMain/embed/inside/onlyInAndroidMain
@@ -0,0 +1 @@
+onlyInAndroidMain
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/reference/jvm/embed/inside/inCommon b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/reference/jvm/embed/inside/inCommon
new file mode 100644
index 0000000..7cbcb79
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/reference/jvm/embed/inside/inCommon
@@ -0,0 +1 @@
+inCommon
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/reference/jvm/embed/inside/inner/innerInCommon b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/reference/jvm/embed/inside/inner/innerInCommon
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/reference/jvm/embed/inside/inner/innerInCommon
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/reference/jvm/embed/inside/inner/platformOverride b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/reference/jvm/embed/inside/inner/platformOverride
new file mode 100644
index 0000000..89aa2c5
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/reference/jvm/embed/inside/inner/platformOverride
@@ -0,0 +1 @@
+jvmOverride
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/reference/jvm/embed/inside/onlyInJvm b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/reference/jvm/embed/inside/onlyInJvm
new file mode 100644
index 0000000..d4cb69d
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/reference/jvm/embed/inside/onlyInJvm
@@ -0,0 +1 @@
+onlyInJvm
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/reference/linuxX64/embed/inside/inCommon b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/reference/linuxX64/embed/inside/inCommon
new file mode 100644
index 0000000..7cbcb79
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/reference/linuxX64/embed/inside/inCommon
@@ -0,0 +1 @@
+inCommon
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/reference/linuxX64/embed/inside/inner/innerInCommon b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/reference/linuxX64/embed/inside/inner/innerInCommon
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/reference/linuxX64/embed/inside/inner/innerInCommon
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/reference/linuxX64/embed/inside/inner/platformOverride b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/reference/linuxX64/embed/inside/inner/platformOverride
new file mode 100644
index 0000000..0f94db7
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/reference/linuxX64/embed/inside/inner/platformOverride
@@ -0,0 +1 @@
+linuxX64Override
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/reference/linuxX64/embed/inside/onlyInLinuxX64 b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/reference/linuxX64/embed/inside/onlyInLinuxX64
new file mode 100644
index 0000000..881c265
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/reference/linuxX64/embed/inside/onlyInLinuxX64
@@ -0,0 +1 @@
+onlyInLinuxX64
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/reference/wasmJs/embed/inside/inCommon b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/reference/wasmJs/embed/inside/inCommon
new file mode 100644
index 0000000..7cbcb79
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/reference/wasmJs/embed/inside/inCommon
@@ -0,0 +1 @@
+inCommon
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/reference/wasmJs/embed/inside/inner/innerInCommon b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/reference/wasmJs/embed/inside/inner/innerInCommon
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/reference/wasmJs/embed/inside/inner/innerInCommon
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/reference/wasmJs/embed/inside/inner/platformOverride b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/reference/wasmJs/embed/inside/inner/platformOverride
new file mode 100644
index 0000000..c6c686d
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/reference/wasmJs/embed/inside/inner/platformOverride
@@ -0,0 +1 @@
+wasmJsOverride
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/reference/wasmJs/embed/inside/onlyInWasmJs b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/reference/wasmJs/embed/inside/onlyInWasmJs
new file mode 100644
index 0000000..182f627
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/reference/wasmJs/embed/inside/onlyInWasmJs
@@ -0,0 +1 @@
+onlyInWasmJs
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/src/androidMain/multiplatformResources/inner/platformOverride b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/src/androidMain/multiplatformResources/inner/platformOverride
new file mode 100644
index 0000000..cb2b6da
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/src/androidMain/multiplatformResources/inner/platformOverride
@@ -0,0 +1 @@
+androidMain
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/src/androidMain/multiplatformResources/onlyInAndroidMain b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/src/androidMain/multiplatformResources/onlyInAndroidMain
new file mode 100644
index 0000000..6d8df51
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/src/androidMain/multiplatformResources/onlyInAndroidMain
@@ -0,0 +1 @@
+onlyInAndroidMain
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/src/commonMain/kotlin/stub.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/src/commonMain/kotlin/stub.kt
new file mode 100644
index 0000000..761254b
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/src/commonMain/kotlin/stub.kt
@@ -0,0 +1 @@
+package test
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/src/commonMain/multiplatformResources/inCommon b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/src/commonMain/multiplatformResources/inCommon
new file mode 100644
index 0000000..7cbcb79
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/src/commonMain/multiplatformResources/inCommon
@@ -0,0 +1 @@
+inCommon
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/src/commonMain/multiplatformResources/inner/innerInCommon b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/src/commonMain/multiplatformResources/inner/innerInCommon
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/src/commonMain/multiplatformResources/inner/innerInCommon
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/src/commonMain/multiplatformResources/inner/platformOverride b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/src/commonMain/multiplatformResources/inner/platformOverride
new file mode 100644
index 0000000..a1c1801
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/src/commonMain/multiplatformResources/inner/platformOverride
@@ -0,0 +1 @@
+platformOverride
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/src/jvmMain/multiplatformResources/inner/platformOverride b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/src/jvmMain/multiplatformResources/inner/platformOverride
new file mode 100644
index 0000000..89aa2c5
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/src/jvmMain/multiplatformResources/inner/platformOverride
@@ -0,0 +1 @@
+jvmOverride
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/src/jvmMain/multiplatformResources/onlyInJvm b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/src/jvmMain/multiplatformResources/onlyInJvm
new file mode 100644
index 0000000..d4cb69d
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/src/jvmMain/multiplatformResources/onlyInJvm
@@ -0,0 +1 @@
+onlyInJvm
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/src/linuxX64Main/multiplatformResources/inner/platformOverride b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/src/linuxX64Main/multiplatformResources/inner/platformOverride
new file mode 100644
index 0000000..0f94db7
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/src/linuxX64Main/multiplatformResources/inner/platformOverride
@@ -0,0 +1 @@
+linuxX64Override
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/src/linuxX64Main/multiplatformResources/onlyInLinuxX64 b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/src/linuxX64Main/multiplatformResources/onlyInLinuxX64
new file mode 100644
index 0000000..881c265
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/src/linuxX64Main/multiplatformResources/onlyInLinuxX64
@@ -0,0 +1 @@
+onlyInLinuxX64
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/src/wasmJsMain/multiplatformResources/inner/platformOverride b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/src/wasmJsMain/multiplatformResources/inner/platformOverride
new file mode 100644
index 0000000..c6c686d
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/src/wasmJsMain/multiplatformResources/inner/platformOverride
@@ -0,0 +1 @@
+wasmJsOverride
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/src/wasmJsMain/multiplatformResources/onlyInWasmJs b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/src/wasmJsMain/multiplatformResources/onlyInWasmJs
new file mode 100644
index 0000000..182f627
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/multiplatformResources/publication/src/wasmJsMain/multiplatformResources/onlyInWasmJs
@@ -0,0 +1 @@
+onlyInWasmJs
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin/build.gradle.kts
index 620cd35..c6bb0fb 100644
--- a/libraries/tools/kotlin-gradle-plugin/build.gradle.kts
+++ b/libraries/tools/kotlin-gradle-plugin/build.gradle.kts
@@ -302,4 +302,4 @@
     tasks.named("check") {
         dependsOn("functionalTest")
     }
-}
+}
\ No newline at end of file