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