diff --git a/buildSrc/src/main/kotlin/LibrariesCommon.kt b/buildSrc/src/main/kotlin/LibrariesCommon.kt index 8867cb91ec7..cc9984f9908 100644 --- a/buildSrc/src/main/kotlin/LibrariesCommon.kt +++ b/buildSrc/src/main/kotlin/LibrariesCommon.kt @@ -5,9 +5,11 @@ @file:JvmName("LibrariesCommon") +import gradle.kotlin.dsl.accessors._a448c82b4669f5dc55622c27b71461fb.base import org.gradle.api.JavaVersion import org.gradle.api.Project import org.gradle.api.file.FileCollection +import org.gradle.api.java.archives.Manifest import org.gradle.api.tasks.compile.JavaCompile import org.gradle.kotlin.dsl.* import org.gradle.process.CommandLineArgumentProvider @@ -79,3 +81,30 @@ fun Project.configureFrontendIr() = tasks.withType().configure } } } + +@JvmOverloads +fun Project.manifestAttributes( + manifest: Manifest, + component: String? = null, + multiRelease: Boolean = false +) { + manifest.attributes( + "Implementation-Vendor" to "JetBrains", + "Implementation-Title" to base.archivesName, + "Implementation-Version" to project.rootProject.extra["buildNumber"] as String + ) + + if (component != null) { + val kotlinLanguageVersion: String by rootProject.extra + manifest.attributes( + "Kotlin-Runtime-Component" to component, + "Kotlin-Version" to kotlinLanguageVersion + ) + } + + if (multiRelease) { + manifest.attributes( + "Multi-Release" to "true" + ) + } +} diff --git a/libraries/commonConfiguration.gradle b/libraries/commonConfiguration.gradle index ec4306b3f79..c8c32707b3e 100644 --- a/libraries/commonConfiguration.gradle +++ b/libraries/commonConfiguration.gradle @@ -1,22 +1,3 @@ -ext.manifestAttributes = { Manifest manifest, Project project, String component = null, boolean multiRelease = false -> - project.configure(manifest) { - attributes \ - 'Implementation-Vendor': 'JetBrains', - 'Implementation-Title': project.archivesBaseName, - 'Implementation-Version': project.buildNumber - - if (component != null) { - attributes \ - 'Kotlin-Runtime-Component': component, - 'Kotlin-Version': project.kotlinLanguageVersion - } - if (multiRelease) { - attributes \ - 'Multi-Release': 'true' - } - } -} - task preparePublication { def properties = project.properties assert project.version != 'unspecified' diff --git a/libraries/kotlin.test/annotations-common/build.gradle b/libraries/kotlin.test/annotations-common/build.gradle index f3da41a094b..e1e31914ba3 100644 --- a/libraries/kotlin.test/annotations-common/build.gradle +++ b/libraries/kotlin.test/annotations-common/build.gradle @@ -14,7 +14,7 @@ tasks.withType(org.jetbrains.kotlin.gradle.dsl.KotlinCompile) { } jar { - manifestAttributes(manifest, project, 'Test') + LibrariesCommon.manifestAttributes(project, manifest, 'Test') } RepoArtifacts.sourcesJar(project) diff --git a/libraries/kotlin.test/common/build.gradle b/libraries/kotlin.test/common/build.gradle index da7ad432c00..4014c19b194 100644 --- a/libraries/kotlin.test/common/build.gradle +++ b/libraries/kotlin.test/common/build.gradle @@ -10,7 +10,7 @@ dependencies { } jar { - manifestAttributes(manifest, project, 'Test') + LibrariesCommon.manifestAttributes(project, manifest, 'Test') } RepoArtifacts.sourcesJar(project) diff --git a/libraries/kotlin.test/js/build.gradle b/libraries/kotlin.test/js/build.gradle index a4d65b5e517..7a7c385165b 100644 --- a/libraries/kotlin.test/js/build.gradle +++ b/libraries/kotlin.test/js/build.gradle @@ -49,7 +49,7 @@ tasks.register("libraryJarWithoutIr", Jar) { archiveClassifier.set(null) destinationDirectory = file("$buildDir/lib/dist") from("$buildDir/classes/main") - manifestAttributes(manifest, project, 'Test') + LibrariesCommon.manifestAttributes(project, manifest, 'Test') } tasks.register("libraryJarWithIr", Zip) { diff --git a/libraries/kotlin.test/junit/build.gradle b/libraries/kotlin.test/junit/build.gradle index e0cd94d402e..0ae72fb1a3c 100644 --- a/libraries/kotlin.test/junit/build.gradle +++ b/libraries/kotlin.test/junit/build.gradle @@ -20,7 +20,7 @@ dependencies { jar { - manifestAttributes(manifest, project, 'Test', true) + LibrariesCommon.manifestAttributes(project, manifest, 'Test', true) if (includeJava9) { from sourceSets.java9.output } diff --git a/libraries/kotlin.test/junit5/build.gradle b/libraries/kotlin.test/junit5/build.gradle index d1891c94cbf..aaac1522dcb 100644 --- a/libraries/kotlin.test/junit5/build.gradle +++ b/libraries/kotlin.test/junit5/build.gradle @@ -21,7 +21,7 @@ dependencies { } jar { - manifestAttributes(manifest, project, 'Test', true) + LibrariesCommon.manifestAttributes(project, manifest, 'Test', true) if (includeJava9) { from sourceSets.java9.output } diff --git a/libraries/kotlin.test/jvm/build.gradle b/libraries/kotlin.test/jvm/build.gradle index 4f3511a61af..5775d0caa55 100644 --- a/libraries/kotlin.test/jvm/build.gradle +++ b/libraries/kotlin.test/jvm/build.gradle @@ -22,7 +22,7 @@ dependencies { } jar { - manifestAttributes(manifest, project, 'Test', true) + LibrariesCommon.manifestAttributes(project, manifest, 'Test', true) if (includeJava9) { from sourceSets.java9.output } diff --git a/libraries/kotlin.test/testng/build.gradle b/libraries/kotlin.test/testng/build.gradle index 407bb3d8439..47440ef9e2b 100644 --- a/libraries/kotlin.test/testng/build.gradle +++ b/libraries/kotlin.test/testng/build.gradle @@ -22,7 +22,7 @@ dependencies { } jar { - manifestAttributes(manifest, project, 'Test', true) + LibrariesCommon.manifestAttributes(project, manifest, 'Test', true) if (includeJava9) { from sourceSets.java9.output } diff --git a/libraries/reflect/api/build.gradle b/libraries/reflect/api/build.gradle index 3c9296e026a..78e0ef49e8a 100644 --- a/libraries/reflect/api/build.gradle +++ b/libraries/reflect/api/build.gradle @@ -62,7 +62,7 @@ compileKotlin { LibrariesCommon.configureFrontendIr(project) jar { - manifestAttributes(manifest, project, "internal") + LibrariesCommon.manifestAttributes(project, manifest, "internal") } tasks.register("java9Jar", Jar) { diff --git a/libraries/reflect/build.gradle.kts b/libraries/reflect/build.gradle.kts index 6473e62fdb6..90ffb9f5024 100644 --- a/libraries/reflect/build.gradle.kts +++ b/libraries/reflect/build.gradle.kts @@ -238,7 +238,11 @@ val result by task { from(zipTree(provider { reflectShadowJar.get().archiveFile.get().asFile })) { include("META-INF/versions/**") } - callGroovy("manifestAttributes", manifest, project, "Main", true) + manifestAttributes( + manifest, + component = "Main", + multiRelease = true + ) } javadocJar() diff --git a/libraries/stdlib/common/build.gradle b/libraries/stdlib/common/build.gradle index ef3fb8058ca..aa3c812db07 100644 --- a/libraries/stdlib/common/build.gradle +++ b/libraries/stdlib/common/build.gradle @@ -63,7 +63,7 @@ compileTestKotlinCommon { } jar { - manifestAttributes(manifest, project, 'Main') + LibrariesCommon.manifestAttributes(project, manifest, 'Main') } RepoArtifacts.sourcesJar(project) diff --git a/libraries/stdlib/jdk7/build.gradle b/libraries/stdlib/jdk7/build.gradle index 07f3f08b71a..f8d9b124819 100644 --- a/libraries/stdlib/jdk7/build.gradle +++ b/libraries/stdlib/jdk7/build.gradle @@ -30,7 +30,7 @@ dependencies { } jar { - manifestAttributes(manifest, project, 'Main', true) + LibrariesCommon.manifestAttributes(project, manifest, 'Main', true) from sourceSets.java9.output } diff --git a/libraries/stdlib/jdk8/build.gradle b/libraries/stdlib/jdk8/build.gradle index f6a1af58eab..5002eb1b144 100644 --- a/libraries/stdlib/jdk8/build.gradle +++ b/libraries/stdlib/jdk8/build.gradle @@ -42,7 +42,7 @@ dependencies { } jar { - manifestAttributes(manifest, project, 'Main', true) + LibrariesCommon.manifestAttributes(project, manifest, 'Main', true) from sourceSets.java9.output } diff --git a/libraries/stdlib/js-v1/build.gradle b/libraries/stdlib/js-v1/build.gradle index a2d1c16d2c7..26cd2919d2a 100644 --- a/libraries/stdlib/js-v1/build.gradle +++ b/libraries/stdlib/js-v1/build.gradle @@ -247,7 +247,7 @@ jar { tasks.register("libraryJarWithoutIr", Jar) { dependsOn(compileJs) archiveClassifier = null - manifestAttributes(manifest, project, 'Main') + LibrariesCommon.manifestAttributes(project, manifest, 'Main') destinationDirectory = file("$buildDir/lib/dist") // TODO: Use standard implementation title after js stdlib detector becomes more flexible (KT-17655) diff --git a/libraries/stdlib/jvm/build.gradle b/libraries/stdlib/jvm/build.gradle index d98bc46b361..305140cb75a 100644 --- a/libraries/stdlib/jvm/build.gradle +++ b/libraries/stdlib/jvm/build.gradle @@ -97,7 +97,7 @@ dependencies { tasks.named("jar", Jar) { dependsOn(configurations.builtins) - manifestAttributes(manifest, project, 'Main', true) + LibrariesCommon.manifestAttributes(project, manifest, 'Main', true) from { zipTree(configurations.builtins.singleFile) } diff --git a/libraries/tools/kotlin-project-model/build.gradle.kts b/libraries/tools/kotlin-project-model/build.gradle.kts index bcb38487d95..c61ad40575a 100644 --- a/libraries/tools/kotlin-project-model/build.gradle.kts +++ b/libraries/tools/kotlin-project-model/build.gradle.kts @@ -37,5 +37,5 @@ tasks.named("compileTestFixturesKotlin") { } tasks.named("jar") { - callGroovy("manifestAttributes", manifest, project) + manifestAttributes(manifest) } diff --git a/libraries/tools/script-runtime/build.gradle b/libraries/tools/script-runtime/build.gradle index b7780fccd5c..2b3ad1214ed 100644 --- a/libraries/tools/script-runtime/build.gradle +++ b/libraries/tools/script-runtime/build.gradle @@ -19,7 +19,7 @@ sourceSets { } jar { - manifestAttributes(manifest, project, 'Main') + LibrariesCommon.manifestAttributes(project, manifest, 'Main') } RepoArtifacts.sourcesJar(project)