diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinJsLibraryGradlePluginIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinJsLibraryGradlePluginIT.kt index 2d76295da36..c2599f47e01 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinJsLibraryGradlePluginIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinJsLibraryGradlePluginIT.kt @@ -5,9 +5,12 @@ package org.jetbrains.kotlin.gradle +import org.gradle.api.logging.LogLevel import org.jetbrains.kotlin.gradle.plugin.KotlinJsCompilerType import org.jetbrains.kotlin.gradle.util.modify import org.junit.Test +import java.util.zip.ZipFile +import kotlin.test.assertNotNull class KotlinJsIrLibraryGradlePluginIT : BaseGradleIT() { override val defaultGradleVersion = GradleVersionRequired.AtLeast("6.1") @@ -64,4 +67,24 @@ class KotlinJsIrLibraryGradlePluginIT : BaseGradleIT() { assertFileExists("build/distributions/js-library.js") } } + + @Test + fun testPublishSourcesJarTaskShouldAlsoIncludeDukatTaskOutputs() { + with( + Project( + "js-library-ir", + minLogLevel = LogLevel.INFO + ) + ) { + setupWorkingDir() + build("sourcesJar") { + assertSuccessful() + val sourcesJarFilePath = "build/libs/js-library-ir-kotlin-sources.jar" + assertFileExists(sourcesJarFilePath) + ZipFile(projectDir.resolve(sourcesJarFilePath)).use { + assertNotNull(it.getEntry("jsMain/index.module_decamelize.kt")) + } + } + } + } } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-library-ir/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-library-ir/build.gradle.kts new file mode 100644 index 00000000000..e906841a706 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-library-ir/build.gradle.kts @@ -0,0 +1,23 @@ +plugins { + kotlin("multiplatform") + `maven-publish` +} + +repositories { + mavenLocal() + mavenCentral() +} + +kotlin { + js(IR) { + browser { + commonWebpackConfig { + cssSupport.enabled = true + } + } + } +} + +dependencies { + "jsMainImplementation"(npm("decamelize", "4.0.0", generateExternals = true)) +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-library-ir/settings.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-library-ir/settings.gradle.kts new file mode 100644 index 00000000000..b63391625d2 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-library-ir/settings.gradle.kts @@ -0,0 +1,11 @@ +pluginManagement { + repositories { + mavenLocal() + mavenCentral() + gradlePluginPortal() + } + + plugins { + id("org.jetbrains.kotlin.multiplatform") version "${extra["kotlin_version"]}" + } +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-library-ir/src/jsMain/main.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-library-ir/src/jsMain/main.kt new file mode 100644 index 00000000000..1be2bb8692e --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-library-ir/src/jsMain/main.kt @@ -0,0 +1,5 @@ +package example + +fun main() { + println("Hello there!") +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinTargets.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinTargets.kt index 576b0709adc..d4e784d89e7 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinTargets.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinTargets.kt @@ -225,10 +225,16 @@ abstract class AbstractKotlinTarget( .disambiguateName( DukatCompilationResolverPlugin.GENERATE_EXTERNALS_INTEGRATED_TASK_SIMPLE_NAME ) - producingCompilation.target.project.afterEvaluate { - sourcesJarTask.dependsOn( - producingCompilation.target.project.tasks.named(dukatGenerateExternalsTaskName) - ) + + with(producingCompilation.target.project) { + val dukatTask = tasks.named(dukatGenerateExternalsTaskName) + sourcesJarTask.dependsOn(dukatTask) + + plugins.withId("maven-publish") { + tasks + .matching { it.name == "sourcesJar" } + .configureEach { it.dependsOn(dukatTask) } + } } }