diff --git a/plugins/resources-generator/src/main/kotlin/dev/icerock/gradle/MultiplatformResourcesPlugin.kt b/plugins/resources-generator/src/main/kotlin/dev/icerock/gradle/MultiplatformResourcesPlugin.kt index c31b2a6e..2e5fb857 100644 --- a/plugins/resources-generator/src/main/kotlin/dev/icerock/gradle/MultiplatformResourcesPlugin.kt +++ b/plugins/resources-generator/src/main/kotlin/dev/icerock/gradle/MultiplatformResourcesPlugin.kt @@ -61,6 +61,7 @@ class MultiplatformResourcesPlugin : Plugin { } } + @Suppress("LongMethod") private fun configureGenerators( target: Project, mrExtension: MultiplatformResourcesPluginExtension, @@ -98,7 +99,13 @@ class MultiplatformResourcesPlugin : Plugin { ) val targets: List = multiplatformExtension.targets.toList() - setupCommonGenerator(commonSourceSet, generatedDir, mrClassPackage, features, target) + val commonGenerationTask = setupCommonGenerator( + commonSourceSet = commonSourceSet, + generatedDir = generatedDir, + mrClassPackage = mrClassPackage, + features = features, + target = target + ) setupAndroidGenerator( targets, androidMainSourceSet, @@ -121,7 +128,6 @@ class MultiplatformResourcesPlugin : Plugin { } val generationTasks = target.tasks.filterIsInstance() - val commonGenerationTask = generationTasks.first { it.name == "generateMRcommonMain" } generationTasks.filter { it != commonGenerationTask } .forEach { it.dependsOn(commonGenerationTask) } } @@ -132,9 +138,9 @@ class MultiplatformResourcesPlugin : Plugin { mrClassPackage: String, features: List>, target: Project - ) { + ): GenerateMultiplatformResourcesTask { val commonGeneratorSourceSet: MRGenerator.SourceSet = createSourceSet(commonSourceSet) - CommonMRGenerator( + return CommonMRGenerator( generatedDir, commonGeneratorSourceSet, mrClassPackage, diff --git a/plugins/resources-generator/src/main/kotlin/dev/icerock/gradle/generator/MRGenerator.kt b/plugins/resources-generator/src/main/kotlin/dev/icerock/gradle/generator/MRGenerator.kt index ae300577..5527d3d5 100644 --- a/plugins/resources-generator/src/main/kotlin/dev/icerock/gradle/generator/MRGenerator.kt +++ b/plugins/resources-generator/src/main/kotlin/dev/icerock/gradle/generator/MRGenerator.kt @@ -69,11 +69,11 @@ abstract class MRGenerator( afterMRGeneration() } - fun apply(project: Project) { + fun apply(project: Project): GenerateMultiplatformResourcesTask { val name = sourceSet.name val genTaskName = "generateMR$name" val genTask = runCatching { - project.tasks.getByName(genTaskName) + project.tasks.getByName(genTaskName) as GenerateMultiplatformResourcesTask }.getOrNull() ?: project.tasks.create(genTaskName, GenerateMultiplatformResourcesTask::class.java) { it.doLast { this@MRGenerator.generate() @@ -81,6 +81,8 @@ abstract class MRGenerator( } apply(generationTask = genTask, project = project) + + return genTask } protected open fun beforeMRGeneration() = Unit diff --git a/sample/mpp-hierarhical/build.gradle.kts b/sample/mpp-hierarhical/build.gradle.kts index d61528df..42e92d33 100644 --- a/sample/mpp-hierarhical/build.gradle.kts +++ b/sample/mpp-hierarhical/build.gradle.kts @@ -26,6 +26,7 @@ kotlin { android() ios() macosX64("macos") + jvm() cocoapods { // Configure fields required by CocoaPods. @@ -34,19 +35,34 @@ kotlin { } // export correct artifact to use all classes of moko-resources directly from Swift - targets.configureEach { - if (this !is org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget) return@configureEach - - this.binaries.configureEach { - if (this is org.jetbrains.kotlin.gradle.plugin.mpp.Framework) { - this.export(project(":resources")) - } + targets.withType(org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget::class.java).all { + binaries.withType(org.jetbrains.kotlin.gradle.plugin.mpp.Framework::class.java).all { + export(project(":resources")) } } + + sourceSets { + val commonMain by getting + val commonTest by getting + + val clientMain by creating { dependsOn(commonMain) } + val clientTest by creating { dependsOn(commonTest) } + + val iosMain by getting { dependsOn(clientMain) } + val iosTest by getting { dependsOn(clientTest) } + + val macosMain by getting { dependsOn(clientMain) } + val macosTest by getting { dependsOn(clientTest) } + + val androidMain by getting { dependsOn(clientMain) } + val androidTest by getting { dependsOn(clientTest) } + + val jvmMain by getting + } } dependencies { - commonMainApi(Deps.Libs.MultiPlatform.mokoResources) + "clientMainApi"(Deps.Libs.MultiPlatform.mokoResources) androidTestImplementation(Deps.Libs.Android.Tests.kotlinTestJUnit) androidTestImplementation(Deps.Libs.Android.Tests.testCore) @@ -58,5 +74,5 @@ dependencies { multiplatformResources { multiplatformResourcesPackage = "com.icerockdev.library" disableStaticFrameworkWarning = true + multiplatformResourcesSourceSet = "clientMain" } - diff --git a/sample/mpp-hierarhical/src/commonMain/resources b/sample/mpp-hierarhical/src/clientMain/resources similarity index 100% rename from sample/mpp-hierarhical/src/commonMain/resources rename to sample/mpp-hierarhical/src/clientMain/resources diff --git a/sample/mpp-hierarhical/src/commonTest/kotlin/BaseUnitTest.kt b/sample/mpp-hierarhical/src/clientTest/kotlin/BaseUnitTest.kt similarity index 100% rename from sample/mpp-hierarhical/src/commonTest/kotlin/BaseUnitTest.kt rename to sample/mpp-hierarhical/src/clientTest/kotlin/BaseUnitTest.kt diff --git a/sample/mpp-hierarhical/src/commonTest/kotlin/StringDescExt.kt b/sample/mpp-hierarhical/src/clientTest/kotlin/StringDescExt.kt similarity index 100% rename from sample/mpp-hierarhical/src/commonTest/kotlin/StringDescExt.kt rename to sample/mpp-hierarhical/src/clientTest/kotlin/StringDescExt.kt diff --git a/sample/mpp-hierarhical/src/commonTest/kotlin/Test.kt b/sample/mpp-hierarhical/src/clientTest/kotlin/Test.kt similarity index 100% rename from sample/mpp-hierarhical/src/commonTest/kotlin/Test.kt rename to sample/mpp-hierarhical/src/clientTest/kotlin/Test.kt