Browse Source

Configure publishing to Maven Central (#1351)

Fixes #1106
pull/1375/head
Alexey Tsvetkov 3 years ago committed by GitHub
parent
commit
eec0f9abe4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 72
      compose/build.gradle.kts
  2. 8
      compose/scripts/reuploadArtifactsToMavenCentral
  3. 13
      compose/settings.gradle.kts

72
compose/build.gradle.kts

@ -1,3 +1,9 @@
import org.jetbrains.compose.internal.publishing.*
plugins {
signing
}
val composeBuild = gradle.includedBuild("support") val composeBuild = gradle.includedBuild("support")
fun Task.dependsOnComposeTask(name: String) = dependsOn(composeBuild.task(name)) fun Task.dependsOnComposeTask(name: String) = dependsOn(composeBuild.task(name))
@ -131,3 +137,69 @@ tasks.register("testComposeModules") { // used in https://github.com/JetBrains/a
tasks.register("run") { tasks.register("run") {
dependsOnComposeTask(":compose:desktop:desktop:desktop-samples:run") dependsOnComposeTask(":compose:desktop:desktop:desktop-samples:run")
} }
val mavenCentral = MavenCentralProperties(project)
if (mavenCentral.signArtifacts) {
signing.useInMemoryPgpKeys(
mavenCentral.signArtifactsKey.get(),
mavenCentral.signArtifactsPassword.get()
)
}
val publishingDir = project.layout.buildDirectory.dir("publishing")
val originalArtifactsRoot = publishingDir.map { it.dir("original") }
val preparedArtifactsRoot = publishingDir.map { it.dir("prepared") }
val modulesFile = publishingDir.map { it.file("modules.txt") }
val findComposeModules by tasks.registering(FindModulesInSpaceTask::class) {
requestedGroupId.set("org.jetbrains.compose")
requestedVersion.set(mavenCentral.version)
spaceInstanceUrl.set("https://public.jetbrains.space")
spaceClientId.set(System.getenv("COMPOSE_REPO_USERNAME") ?: "")
spaceClientSecret.set(System.getenv("COMPOSE_REPO_KEY") ?: "")
spaceProjectId.set(System.getenv("COMPOSE_DEV_REPO_PROJECT_ID") ?: "")
spaceRepoId.set(System.getenv("COMPOSE_DEV_REPO_REPO_ID") ?: "")
modulesTxtFile.set(modulesFile)
}
val downloadArtifactsFromComposeDev by tasks.registering(DownloadFromSpaceMavenRepoTask::class) {
dependsOn(findComposeModules)
modulesToDownload.set(project.provider { readComposeModules(modulesFile, originalArtifactsRoot) })
spaceRepoUrl.set("https://maven.pkg.jetbrains.space/public/p/compose/dev")
}
val fixModulesBeforePublishing by tasks.registering(FixModulesBeforePublishingTask::class) {
dependsOn(downloadArtifactsFromComposeDev)
inputRepoDir.set(originalArtifactsRoot)
outputRepoDir.set(preparedArtifactsRoot)
}
val reuploadArtifactsToMavenCentral by tasks.registering(UploadToSonatypeTask::class) {
dependsOn(fixModulesBeforePublishing)
version.set(mavenCentral.version)
modulesToUpload.set(project.provider { readComposeModules(modulesFile, preparedArtifactsRoot) })
sonatypeServer.set("https://oss.sonatype.org")
user.set(mavenCentral.user)
password.set(mavenCentral.password)
autoCommitOnSuccess.set(mavenCentral.autoCommitOnSuccess)
autoDropOnError.set(mavenCentral.autoDropOnError)
stagingProfileName.set("org.jetbrains.compose")
}
fun readComposeModules(
modulesFile: Provider<out FileSystemLocation>,
repoRoot: Provider<out FileSystemLocation>
): List<ModuleToUpload> =
modulesFile.get().asFile.readLines()
.filter { it.isNotBlank() }
.map { line ->
val (group, artifact, version) = line.split(":")
ModuleToUpload(
groupId = group,
artifactId = artifact,
version = version,
localDir = repoRoot.get().asFile.resolve("$group/$artifact/$version")
)
}

8
compose/scripts/reuploadArtifactsToMavenCentral

@ -0,0 +1,8 @@
#!/bin/bash
cd "$(dirname "$0")"
. ./prepare
pushd ..
./gradlew reuploadArtifactsToMavenCentral $COMPOSE_DEFAULT_GRADLE_ARGS "$@" || exit 1
popd

13
compose/settings.gradle.kts

@ -1 +1,14 @@
pluginManagement {
buildscript {
repositories {
mavenCentral()
maven("https://maven.pkg.jetbrains.space/public/p/compose/internal")
maven("https://maven.pkg.jetbrains.space/public/p/space/maven")
}
dependencies {
classpath("org.jetbrains.compose.internal.build-helpers:publishing:0.0.2")
}
}
}
includeBuild("frameworks/support") includeBuild("frameworks/support")
Loading…
Cancel
Save