From 65e3559c098f9abbb12f4c1d70b987ec0a105b2b Mon Sep 17 00:00:00 2001 From: Sergey Igushkin Date: Mon, 24 Sep 2018 22:15:25 +0300 Subject: [PATCH] Fix resources processing configuration * Add resources processing to the K/N compilations * Use a proper resources output path (composed from target + compilation rather than just compilation name) * Fix incorrect reassignment of the resources directory --- .../kotlin/gradle/NewMultiplatformIT.kt | 17 +++++++++++++++++ .../commonMain/resources/commonMainResource.txt | 1 + .../src/jvm6Main/resources/jvm6MainResource.txt | 1 + .../resources/linux64MainResource.txt | 1 + .../resources/macos64MainResource.txt | 1 + .../resources/mingw64MainResource.txt | 1 + .../nodeJsMain/resources/nodeJsMainResource.txt | 1 + .../wasm32Main/resources/wasm32MainResource.txt | 1 + .../gradle/plugin/KotlinTargetConfigurator.kt | 5 ----- .../plugin/mpp/KotlinCompilationFactory.kt | 3 ++- .../gradle/plugin/mpp/kotlinCompilations.kt | 4 +++- 11 files changed, 29 insertions(+), 7 deletions(-) create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-lib/src/commonMain/resources/commonMainResource.txt create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-lib/src/jvm6Main/resources/jvm6MainResource.txt create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-lib/src/linux64Main/resources/linux64MainResource.txt create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-lib/src/macos64Main/resources/macos64MainResource.txt create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-lib/src/mingw64Main/resources/mingw64MainResource.txt create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-lib/src/nodeJsMain/resources/nodeJsMainResource.txt create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-lib/src/wasm32Main/resources/wasm32MainResource.txt 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 e701bb22b49..d9dd63fe844 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 @@ -163,6 +163,23 @@ class NewMultiplatformIT : BaseGradleIT() { } } + @Test + fun testResourceProcessing() = with(Project("sample-lib", gradleVersion, "new-mpp-lib-and-app")) { + val targetsWithResources = listOf("jvm6", "wasm32", nativeHostTargetName) + val processResourcesTasks = + targetsWithResources.map { ":${it}ProcessResources" } + + build(*processResourcesTasks.toTypedArray()) { + assertSuccessful() + assertTasksExecuted(*processResourcesTasks.toTypedArray()) + + targetsWithResources.forEach { + assertFileExists("build/processedResources/$it/main/commonMainResource.txt") + assertFileExists("build/processedResources/$it/main/${it}MainResource.txt") + } + } + } + @Test fun testSourceSetCyclicDependencyDetection() = with(Project("sample-lib", gradleVersion, "new-mpp-lib-and-app")) { setupWorkingDir() diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-lib/src/commonMain/resources/commonMainResource.txt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-lib/src/commonMain/resources/commonMainResource.txt new file mode 100644 index 00000000000..d2c4f080510 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-lib/src/commonMain/resources/commonMainResource.txt @@ -0,0 +1 @@ +resource \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-lib/src/jvm6Main/resources/jvm6MainResource.txt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-lib/src/jvm6Main/resources/jvm6MainResource.txt new file mode 100644 index 00000000000..d2c4f080510 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-lib/src/jvm6Main/resources/jvm6MainResource.txt @@ -0,0 +1 @@ +resource \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-lib/src/linux64Main/resources/linux64MainResource.txt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-lib/src/linux64Main/resources/linux64MainResource.txt new file mode 100644 index 00000000000..d2c4f080510 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-lib/src/linux64Main/resources/linux64MainResource.txt @@ -0,0 +1 @@ +resource \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-lib/src/macos64Main/resources/macos64MainResource.txt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-lib/src/macos64Main/resources/macos64MainResource.txt new file mode 100644 index 00000000000..d2c4f080510 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-lib/src/macos64Main/resources/macos64MainResource.txt @@ -0,0 +1 @@ +resource \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-lib/src/mingw64Main/resources/mingw64MainResource.txt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-lib/src/mingw64Main/resources/mingw64MainResource.txt new file mode 100644 index 00000000000..d2c4f080510 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-lib/src/mingw64Main/resources/mingw64MainResource.txt @@ -0,0 +1 @@ +resource \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-lib/src/nodeJsMain/resources/nodeJsMainResource.txt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-lib/src/nodeJsMain/resources/nodeJsMainResource.txt new file mode 100644 index 00000000000..d2c4f080510 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-lib/src/nodeJsMain/resources/nodeJsMainResource.txt @@ -0,0 +1 @@ +resource \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-lib/src/wasm32Main/resources/wasm32MainResource.txt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-lib/src/wasm32Main/resources/wasm32MainResource.txt new file mode 100644 index 00000000000..d2c4f080510 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-lib/src/wasm32Main/resources/wasm32MainResource.txt @@ -0,0 +1 @@ +resource \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetConfigurator.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetConfigurator.kt index 08f7c289ae5..e69d0e775f1 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetConfigurator.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetConfigurator.kt @@ -125,11 +125,6 @@ abstract class AbstractKotlinTargetConfigurator ) { val project = compilation.target.project - compilation.output.setResourcesDir(Callable { - val classesDirName = "resources/" + compilation.compilationName - File(project.buildDir, classesDirName) - }) - val resourcesTask = project.tasks.maybeCreate(compilation.processResourcesTaskName, ProcessResources::class.java) resourcesTask.description = "Processes $resourceSet." DslObject(resourcesTask).conventionMapping.map("destinationDir") { compilation.output.resourcesDir } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinCompilationFactory.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinCompilationFactory.kt index 66e72f1caa0..00e04c1e136 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinCompilationFactory.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinCompilationFactory.kt @@ -10,13 +10,14 @@ import org.gradle.api.NamedDomainObjectFactory import org.gradle.api.Project import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation import org.jetbrains.kotlin.gradle.plugin.KotlinTarget +import java.util.concurrent.Callable interface KotlinCompilationFactory : NamedDomainObjectFactory { val itemClass: Class } private fun KotlinTarget.createCompilationOutput(name: String) = - KotlinCompilationOutput(project, project.buildDir.resolve("processedResources/$name")) + KotlinCompilationOutput(project, Callable { project.buildDir.resolve("processedResources/$targetName/$name") }) class KotlinCommonCompilationFactory( val target: KotlinOnlyTarget diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinCompilations.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinCompilations.kt index f37b0adf8bc..65aaa195e3e 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinCompilations.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinCompilations.kt @@ -269,7 +269,7 @@ class KotlinNativeCompilation( override val target: KotlinNativeTarget, name: String, override val output: SourceSetOutput -) : AbstractKotlinCompilation(target, name) { +) : AbstractKotlinCompilation(target, name), KotlinCompilationWithResources { private val project: Project get() = target.project @@ -369,6 +369,8 @@ class KotlinNativeCompilation( getBinary(NativeOutputKind.valueOf(kind.toUpperCase()), NativeBuildType.valueOf(buildType.toUpperCase())) // Naming + override val processResourcesTaskName: String + get() = disambiguateName("processResources") val linkAllTaskName: String get() = lowerCamelCaseName(