From 7ac4396cdfaace4faeec1d6057d8a1f7b4898caa Mon Sep 17 00:00:00 2001 From: Ilya Muradyan Date: Tue, 16 Feb 2021 13:56:59 +0300 Subject: [PATCH 1/3] Remove Bintray publication --- gradle.properties | 3 -- jupyter-lib/api-annotations/build.gradle.kts | 4 +- .../api-gradle-plugin/build.gradle.kts | 4 +- .../jupyter/api/plugin/ApiGradlePlugin.kt | 1 - jupyter-lib/api/build.gradle.kts | 4 +- jupyter-lib/lib/build.gradle.kts | 4 +- jupyter-lib/shared-compiler/build.gradle.kts | 4 +- .../common-dependencies/build.gradle.kts | 4 +- .../kotlinx/jupyter/build/distTasks.kt | 1 - kotlin-jupyter-publish/build.gradle.kts | 2 +- .../jupyter/plugin/ApiPublishGradlePlugin.kt | 2 - .../jupyter/publishing/ArtifactPublication.kt | 4 +- .../kotlinx/jupyter/publishing/publication.kt | 48 +------------------ 13 files changed, 17 insertions(+), 68 deletions(-) diff --git a/gradle.properties b/gradle.properties index 302d119c7..4e48b6769 100644 --- a/gradle.properties +++ b/gradle.properties @@ -17,8 +17,5 @@ baseVersion=0.8.3 projectRepoUrl=https://github.com/Kotlin/kotlin-jupyter docsRepo=git@github.com:ileasile/kotlin-jupyter-docs.git -bintray_user_org=kotlin -bintray_repo=kotlin-datascience - # Workaround for https://github.com/Kotlin/dokka/issues/1405 org.gradle.jvmargs=-XX:MaxMetaspaceSize=768m -Xmx2048m diff --git a/jupyter-lib/api-annotations/build.gradle.kts b/jupyter-lib/api-annotations/build.gradle.kts index 4f91cfe34..9c3620766 100644 --- a/jupyter-lib/api-annotations/build.gradle.kts +++ b/jupyter-lib/api-annotations/build.gradle.kts @@ -27,6 +27,6 @@ tasks.withType(KotlinCompile::class.java).all { addPublication { publicationName = "api-annotations" artifactId = "kotlin-jupyter-api-annotations" - bintrayDescription = "Annotations for adding Kotlin Jupyter notebooks support to Kotlin libraries" - bintrayPackageName = artifactId + description = "Annotations for adding Kotlin Jupyter notebooks support to Kotlin libraries" + packageName = artifactId } diff --git a/jupyter-lib/api-gradle-plugin/build.gradle.kts b/jupyter-lib/api-gradle-plugin/build.gradle.kts index c5c2a950f..b30964a62 100644 --- a/jupyter-lib/api-gradle-plugin/build.gradle.kts +++ b/jupyter-lib/api-gradle-plugin/build.gradle.kts @@ -92,7 +92,7 @@ pluginBundle { addPublication { publicationName = pluginName artifactId = "kotlin-jupyter-api-gradle-plugin" - bintrayDescription = "Gradle plugin providing a smooth Jupyter notebooks integration for Kotlin libraries" - bintrayPackageName = artifactId + description = "Gradle plugin providing a smooth Jupyter notebooks integration for Kotlin libraries" + packageName = artifactId publishToSonatype = false } diff --git a/jupyter-lib/api-gradle-plugin/src/main/kotlin/org/jetbrains/kotlinx/jupyter/api/plugin/ApiGradlePlugin.kt b/jupyter-lib/api-gradle-plugin/src/main/kotlin/org/jetbrains/kotlinx/jupyter/api/plugin/ApiGradlePlugin.kt index f6b795df8..457f46c1e 100644 --- a/jupyter-lib/api-gradle-plugin/src/main/kotlin/org/jetbrains/kotlinx/jupyter/api/plugin/ApiGradlePlugin.kt +++ b/jupyter-lib/api-gradle-plugin/src/main/kotlin/org/jetbrains/kotlinx/jupyter/api/plugin/ApiGradlePlugin.kt @@ -24,7 +24,6 @@ class ApiGradlePlugin : Plugin { target.repositories { mavenCentral() - maven("https://kotlin.bintray.com/kotlin-datascience") } val pluginExtension = KotlinJupyterPluginExtension(target) diff --git a/jupyter-lib/api/build.gradle.kts b/jupyter-lib/api/build.gradle.kts index 09acac3f1..ad8b98e7b 100644 --- a/jupyter-lib/api/build.gradle.kts +++ b/jupyter-lib/api/build.gradle.kts @@ -45,6 +45,6 @@ tasks { addPublication { publicationName = "api" artifactId = "kotlin-jupyter-api" - bintrayDescription = "API for libraries supporting Kotlin Jupyter notebooks" - bintrayPackageName = artifactId + description = "API for libraries supporting Kotlin Jupyter notebooks" + packageName = artifactId } diff --git a/jupyter-lib/lib/build.gradle.kts b/jupyter-lib/lib/build.gradle.kts index 26e52da6d..83ca0dc5d 100644 --- a/jupyter-lib/lib/build.gradle.kts +++ b/jupyter-lib/lib/build.gradle.kts @@ -16,6 +16,6 @@ dependencies { addPublication { publicationName = "lib" artifactId = "kotlin-jupyter-lib" - bintrayDescription = "Internal part of Kotlin Jupyter API used only inside notebook cells" - bintrayPackageName = artifactId + description = "Internal part of Kotlin Jupyter API used only inside notebook cells" + packageName = artifactId } diff --git a/jupyter-lib/shared-compiler/build.gradle.kts b/jupyter-lib/shared-compiler/build.gradle.kts index 7084b205f..896581945 100644 --- a/jupyter-lib/shared-compiler/build.gradle.kts +++ b/jupyter-lib/shared-compiler/build.gradle.kts @@ -82,6 +82,6 @@ tasks.processResources { addPublication { publicationName = "compiler" artifactId = "kotlin-jupyter-shared-compiler" - bintrayDescription = "Implementation of REPL compiler and preprocessor for Jupyter dialect of Kotlin (IDE-compatible)" - bintrayPackageName = artifactId + description = "Implementation of REPL compiler and preprocessor for Jupyter dialect of Kotlin (IDE-compatible)" + packageName = artifactId } diff --git a/kotlin-jupyter-plugin/common-dependencies/build.gradle.kts b/kotlin-jupyter-plugin/common-dependencies/build.gradle.kts index 907fc099b..7b2a088ba 100644 --- a/kotlin-jupyter-plugin/common-dependencies/build.gradle.kts +++ b/kotlin-jupyter-plugin/common-dependencies/build.gradle.kts @@ -19,6 +19,6 @@ dependencies { addPublication { publicationName = "common-dependencies" artifactId = "kotlin-jupyter-common-dependencies" - bintrayDescription = "Notebook API entities used for building kernel documentation" - bintrayPackageName = artifactId + description = "Notebook API entities used for building kernel documentation" + packageName = artifactId } diff --git a/kotlin-jupyter-plugin/src/main/kotlin/org/jetbrains/kotlinx/jupyter/build/distTasks.kt b/kotlin-jupyter-plugin/src/main/kotlin/org/jetbrains/kotlinx/jupyter/build/distTasks.kt index 4da2517b5..3d9a80e29 100644 --- a/kotlin-jupyter-plugin/src/main/kotlin/org/jetbrains/kotlinx/jupyter/build/distTasks.kt +++ b/kotlin-jupyter-plugin/src/main/kotlin/org/jetbrains/kotlinx/jupyter/build/distTasks.kt @@ -182,7 +182,6 @@ fun ProjectWithOptions.prepareAggregateUploadTasks() { tasksList.add("publishToPluginPortal") tasksList.add("publishToSonatypeAndRelease") - tasksList.add("bintrayUpload") tasksList.add("publishDocs") tasks.register("aggregate${infix}Upload") { diff --git a/kotlin-jupyter-publish/build.gradle.kts b/kotlin-jupyter-publish/build.gradle.kts index 6d2030991..e5900670d 100644 --- a/kotlin-jupyter-publish/build.gradle.kts +++ b/kotlin-jupyter-publish/build.gradle.kts @@ -11,9 +11,9 @@ repositories { } dependencies { - implementation("com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.5") implementation("org.jetbrains.dokka:dokka-gradle-plugin:1.4.20") implementation("io.codearte.gradle.nexus:gradle-nexus-staging-plugin:0.22.0") + implementation("de.marcphilipp.gradle:nexus-publish-plugin:0.4.0") // For maven-publish implementation(gradleApi()) diff --git a/kotlin-jupyter-publish/src/main/kotlin/org/jetbrains/kotlinx/jupyter/plugin/ApiPublishGradlePlugin.kt b/kotlin-jupyter-publish/src/main/kotlin/org/jetbrains/kotlinx/jupyter/plugin/ApiPublishGradlePlugin.kt index 1d6079aad..bb2fe9425 100644 --- a/kotlin-jupyter-publish/src/main/kotlin/org/jetbrains/kotlinx/jupyter/plugin/ApiPublishGradlePlugin.kt +++ b/kotlin-jupyter-publish/src/main/kotlin/org/jetbrains/kotlinx/jupyter/plugin/ApiPublishGradlePlugin.kt @@ -1,6 +1,5 @@ package org.jetbrains.kotlinx.jupyter.plugin -import com.jfrog.bintray.gradle.BintrayPlugin import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.api.publish.maven.plugins.MavenPublishPlugin @@ -12,7 +11,6 @@ class ApiPublishGradlePlugin : Plugin { target.pluginManager.run { apply(DokkaPlugin::class.java) apply(MavenPublishPlugin::class.java) - apply(BintrayPlugin::class.java) apply(SigningPlugin::class.java) } } diff --git a/kotlin-jupyter-publish/src/main/kotlin/org/jetbrains/kotlinx/jupyter/publishing/ArtifactPublication.kt b/kotlin-jupyter-publish/src/main/kotlin/org/jetbrains/kotlinx/jupyter/publishing/ArtifactPublication.kt index 46a78778d..8c5d1c9f9 100644 --- a/kotlin-jupyter-publish/src/main/kotlin/org/jetbrains/kotlinx/jupyter/publishing/ArtifactPublication.kt +++ b/kotlin-jupyter-publish/src/main/kotlin/org/jetbrains/kotlinx/jupyter/publishing/ArtifactPublication.kt @@ -4,7 +4,7 @@ class ArtifactPublication { var publicationName: String? = null var artifactId: String? = null var groupId: String? = NEXUS_PACKAGE_GROUP - var bintrayPackageName: String? = null - var bintrayDescription: String? = null + var packageName: String? = null + var description: String? = null var publishToSonatype: Boolean = true } diff --git a/kotlin-jupyter-publish/src/main/kotlin/org/jetbrains/kotlinx/jupyter/publishing/publication.kt b/kotlin-jupyter-publish/src/main/kotlin/org/jetbrains/kotlinx/jupyter/publishing/publication.kt index 2f10f0b84..e5d186f28 100644 --- a/kotlin-jupyter-publish/src/main/kotlin/org/jetbrains/kotlinx/jupyter/publishing/publication.kt +++ b/kotlin-jupyter-publish/src/main/kotlin/org/jetbrains/kotlinx/jupyter/publishing/publication.kt @@ -1,12 +1,10 @@ package org.jetbrains.kotlinx.jupyter.publishing -import com.jfrog.bintray.gradle.BintrayExtension import org.gradle.api.Project import org.gradle.api.publish.PublishingExtension import org.gradle.api.publish.maven.MavenPublication import org.gradle.api.tasks.SourceSetContainer import org.gradle.api.tasks.bundling.Jar -import org.gradle.kotlin.dsl.delegateClosureOf import org.gradle.kotlin.dsl.get import org.gradle.kotlin.dsl.getByName import org.gradle.kotlin.dsl.invoke @@ -15,7 +13,6 @@ import org.jetbrains.dokka.gradle.DokkaTask import java.io.File import java.net.URI import java.nio.file.Path -import java.util.Date fun Project.addPublication(configuration: ArtifactPublication.() -> Unit) { val settings = ArtifactPublication().apply(configuration) @@ -68,8 +65,8 @@ fun Project.addPublication(configuration: ArtifactPublication.() -> Unit) { artifact(tasks["javadocJar"]) pom { - name.set(settings.bintrayPackageName) - description.set(settings.bintrayDescription) + name.set(settings.packageName) + description.set(settings.description) url.set("https://github.com/Kotlin/kotlin-jupyter") inceptionYear.set("2021") @@ -123,47 +120,6 @@ fun Project.addPublication(configuration: ArtifactPublication.() -> Unit) { } } - extensions.configure("bintray") { - // property must be set in ~/.gradle/gradle.properties - user = project.findProperty("bintray_user") as String? ?: "" - key = project.findProperty("bintray_key") as String? ?: "" - val bintrayRepo = project.findProperty("bintray_repo") as String? ?: "" - val bintrayUserOrg = project.findProperty("bintray_user_org") as String? ?: "" - - setPublications(settings.publicationName) // When uploading configuration files - - dryRun = false // Whether to run this as dry-run, without deploying - publish = true // If version should be auto published after an upload - - pkg( - delegateClosureOf { - repo = bintrayRepo - name = settings.bintrayPackageName - userOrg = bintrayUserOrg - desc = settings.bintrayDescription - - val projectUrl = project.findProperty("projectRepoUrl") as String? ?: "" - websiteUrl = projectUrl - vcsUrl = projectUrl - issueTrackerUrl = "$projectUrl/issues" - - setLicenses("Apache-2.0") - publicDownloadNumbers = true - - // Optional version descriptor - version( - delegateClosureOf { - val projVersion = project.version as String - name = projVersion // Bintray logical version name - desc = settings.bintrayDescription - released = Date().toString() - vcsTag = projVersion - } - ) - } - ) - } - val thisProjectName = project.name if (rootProject.findProperty("isMainProject") == true) { From ffc5b030f91745073b29ddfdc884313628bb3b5c Mon Sep 17 00:00:00 2001 From: Ilya Muradyan Date: Tue, 16 Feb 2021 14:13:43 +0300 Subject: [PATCH 2/3] Publish with nexus-publish-plugin --- build.gradle.kts | 8 ++------ .../jupyter/api/plugin/ApiGradlePlugin.kt | 1 - .../jupyter/plugin/ApiPublishGradlePlugin.kt | 2 ++ .../kotlinx/jupyter/publishing/nexusUtil.kt | 17 ++++++++++++++++- .../kotlinx/jupyter/publishing/publication.kt | 16 +++------------- 5 files changed, 23 insertions(+), 21 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 28afb3f6f..4c7fb0bde 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -115,18 +115,14 @@ tasks.register("publishLocal") { ) } -val publishToSonatype by tasks.registering { - group = "publishing" -} - tasks.named("closeRepository") { - mustRunAfter(publishToSonatype) + mustRunAfter("publishToSonatype") } tasks.register("publishToSonatypeAndRelease") { group = "publishing" - dependsOn(publishToSonatype, "closeAndReleaseRepository") + dependsOn("publishToSonatype", "closeAndReleaseRepository") } tasks.register("publishToPluginPortal") { diff --git a/jupyter-lib/api-gradle-plugin/src/main/kotlin/org/jetbrains/kotlinx/jupyter/api/plugin/ApiGradlePlugin.kt b/jupyter-lib/api-gradle-plugin/src/main/kotlin/org/jetbrains/kotlinx/jupyter/api/plugin/ApiGradlePlugin.kt index 457f46c1e..658a855da 100644 --- a/jupyter-lib/api-gradle-plugin/src/main/kotlin/org/jetbrains/kotlinx/jupyter/api/plugin/ApiGradlePlugin.kt +++ b/jupyter-lib/api-gradle-plugin/src/main/kotlin/org/jetbrains/kotlinx/jupyter/api/plugin/ApiGradlePlugin.kt @@ -3,7 +3,6 @@ package org.jetbrains.kotlinx.jupyter.api.plugin import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.kotlin.dsl.invoke -import org.gradle.kotlin.dsl.maven import org.gradle.kotlin.dsl.register import org.gradle.kotlin.dsl.repositories import org.jetbrains.kotlin.gradle.internal.Kapt3GradleSubplugin diff --git a/kotlin-jupyter-publish/src/main/kotlin/org/jetbrains/kotlinx/jupyter/plugin/ApiPublishGradlePlugin.kt b/kotlin-jupyter-publish/src/main/kotlin/org/jetbrains/kotlinx/jupyter/plugin/ApiPublishGradlePlugin.kt index bb2fe9425..a1f89237c 100644 --- a/kotlin-jupyter-publish/src/main/kotlin/org/jetbrains/kotlinx/jupyter/plugin/ApiPublishGradlePlugin.kt +++ b/kotlin-jupyter-publish/src/main/kotlin/org/jetbrains/kotlinx/jupyter/plugin/ApiPublishGradlePlugin.kt @@ -1,5 +1,6 @@ package org.jetbrains.kotlinx.jupyter.plugin +import de.marcphilipp.gradle.nexus.NexusPublishPlugin import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.api.publish.maven.plugins.MavenPublishPlugin @@ -11,6 +12,7 @@ class ApiPublishGradlePlugin : Plugin { target.pluginManager.run { apply(DokkaPlugin::class.java) apply(MavenPublishPlugin::class.java) + apply(NexusPublishPlugin::class.java) apply(SigningPlugin::class.java) } } diff --git a/kotlin-jupyter-publish/src/main/kotlin/org/jetbrains/kotlinx/jupyter/publishing/nexusUtil.kt b/kotlin-jupyter-publish/src/main/kotlin/org/jetbrains/kotlinx/jupyter/publishing/nexusUtil.kt index 941ac419d..da57d90a3 100644 --- a/kotlin-jupyter-publish/src/main/kotlin/org/jetbrains/kotlinx/jupyter/publishing/nexusUtil.kt +++ b/kotlin-jupyter-publish/src/main/kotlin/org/jetbrains/kotlinx/jupyter/publishing/nexusUtil.kt @@ -1,5 +1,7 @@ package org.jetbrains.kotlinx.jupyter.publishing +import de.marcphilipp.gradle.nexus.NexusPublishExtension +import de.marcphilipp.gradle.nexus.NexusPublishPlugin import io.codearte.gradle.nexus.NexusStagingExtension import io.codearte.gradle.nexus.NexusStagingPlugin import org.gradle.api.Project @@ -15,9 +17,21 @@ fun getNexusPassword(): String? { return System.getenv("SONATYPE_PASSWORD") } +fun Project.configureNexusPublish() { + extensions.configure("nexusPublishing") { + repositories { + sonatype { + username.set(getNexusUser()) + password.set(getNexusPassword()) + } + } + } +} + fun Project.applyNexusPlugin() { pluginManager.run { apply(NexusStagingPlugin::class.java) + apply(NexusPublishPlugin::class.java) } extensions.configure("nexusStaging") { @@ -25,6 +39,7 @@ fun Project.applyNexusPlugin() { password = getNexusPassword() packageGroup = NEXUS_PACKAGE_GROUP repositoryDescription = "kotlin-jupyter project, v. ${project.version}" - // serverUrl = NEXUS_REPO_URL } + + configureNexusPublish() } \ No newline at end of file diff --git a/kotlin-jupyter-publish/src/main/kotlin/org/jetbrains/kotlinx/jupyter/publishing/publication.kt b/kotlin-jupyter-publish/src/main/kotlin/org/jetbrains/kotlinx/jupyter/publishing/publication.kt index e5d186f28..bec028a65 100644 --- a/kotlin-jupyter-publish/src/main/kotlin/org/jetbrains/kotlinx/jupyter/publishing/publication.kt +++ b/kotlin-jupyter-publish/src/main/kotlin/org/jetbrains/kotlinx/jupyter/publishing/publication.kt @@ -11,7 +11,6 @@ import org.gradle.kotlin.dsl.invoke import org.gradle.plugins.signing.SigningExtension import org.jetbrains.dokka.gradle.DokkaTask import java.io.File -import java.net.URI import java.nio.file.Path fun Project.addPublication(configuration: ArtifactPublication.() -> Unit) { @@ -21,8 +20,6 @@ fun Project.addPublication(configuration: ArtifactPublication.() -> Unit) { val mainSourceSet = sourceSets.named("main").get() val publicationName = settings.publicationName!! - val sonatypeUser = getNexusUser() - val sonatypePassword = getNexusPassword() val signingPrivateKey = System.getenv("SIGN_KEY_PRIVATE") val signingKey = System.getenv("SIGN_KEY_ID") val signingKeyPassphrase = System.getenv("SIGN_KEY_PASSPHRASE") @@ -108,19 +105,11 @@ fun Project.addPublication(configuration: ArtifactPublication.() -> Unit) { url = it.toUri() } } - - maven { - name = "Sonatype" - url = URI(NEXUS_REPO_URL) - credentials { - username = sonatypeUser - password = sonatypePassword - } - } } } val thisProjectName = project.name + val thisProject = project if (rootProject.findProperty("isMainProject") == true) { rootProject.tasks { @@ -129,8 +118,9 @@ fun Project.addPublication(configuration: ArtifactPublication.() -> Unit) { } if (settings.publishToSonatype) { + thisProject.configureNexusPublish() named("publishToSonatype") { - dependsOn(":$thisProjectName:publishAllPublicationsToSonatypeRepository") + dependsOn(":$thisProjectName:publishToSonatype") } } } From 9a67aa54ca7c5c4d5e0fa3902886500777e841e6 Mon Sep 17 00:00:00 2001 From: Ilya Muradyan Date: Tue, 16 Feb 2021 17:44:01 +0300 Subject: [PATCH 3/3] Filter unique integration classes FQNs --- .../api/plugin/tasks/JupyterApiResourcesTask.kt | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/jupyter-lib/api-gradle-plugin/src/main/kotlin/org/jetbrains/kotlinx/jupyter/api/plugin/tasks/JupyterApiResourcesTask.kt b/jupyter-lib/api-gradle-plugin/src/main/kotlin/org/jetbrains/kotlinx/jupyter/api/plugin/tasks/JupyterApiResourcesTask.kt index dc1f65fe8..2abfce8e2 100644 --- a/jupyter-lib/api-gradle-plugin/src/main/kotlin/org/jetbrains/kotlinx/jupyter/api/plugin/tasks/JupyterApiResourcesTask.kt +++ b/jupyter-lib/api-gradle-plugin/src/main/kotlin/org/jetbrains/kotlinx/jupyter/api/plugin/tasks/JupyterApiResourcesTask.kt @@ -66,7 +66,7 @@ open class JupyterApiResourcesTask : DefaultTask() { ) } - class FQNAware( + data class FQNAware( val fqn: String ) @@ -77,8 +77,17 @@ open class JupyterApiResourcesTask : DefaultTask() { operator fun LibrariesScanResult.plus(other: LibrariesScanResult): LibrariesScanResult { return LibrariesScanResult( - definitions + other.definitions, - producers + other.producers + union(definitions, other.definitions), + union(producers, other.producers) ) } + + companion object { + private inline fun union(a: Array, b: Array): Array { + val result = mutableSetOf() + result.addAll(a) + result.addAll(b) + return result.toTypedArray() + } + } }