Browse Source
Fixes https://youtrack.jetbrains.com/issue/CMP-1339/Change-description-of-androidx-artifacts-in-Maven-Central-stage We need some changes in it: https://youtrack.jetbrains.com/issue/CMP-7198/Maven-Central-publication-publishes-old-artifacts-for-Core-Bundle https://youtrack.jetbrains.com/issue/CMP-1339/Change-description-of-androidx-artifacts-in-Maven-Central-stage and the current workflow is complicated: - make changes - publish this as a library in the dev repo - add this as a dependency in some Gradle project (Examplepull/5184/head2d8c5f479f/mpp/build.gradle.kts (L286)
) - Run the gradle task on CI from compose-multiplatform-core project ``` clone compose-multiplatform-core ./gradlew reuploadArtifactsToMavenCentral --info --stacktrace -Pmaven.central.sign=true -Pmaven.central.group=$group -Pmaven.central.stage=$stage -Pmaven.central.version=$version -Pmaven.central.staging.close.after.upload=true ``` This task also doesn't use any of `compose-multiplatform-core` info, so it is overhead to store it as part of this project. Now we just change some code, and it is already can be run by CI. Related change on CI:14790a5068
Related change in core: TODO ## Testing 1. Run https://teamcity.jetbrains.com/buildConfiguration/JetBrainsPublicProjects_Compose_UploadToMavenCentralManually on branch igor.demin/upload-to-maven-central-without-library with: 2. See:
Igor Demin
2 days ago
27 changed files with 104 additions and 132 deletions
@ -1,78 +0,0 @@
|
||||
plugins { |
||||
kotlin("jvm") version "1.5.30" apply false |
||||
id("com.github.johnrengelman.shadow") version "7.1.0" apply false |
||||
} |
||||
|
||||
subprojects { |
||||
group = "org.jetbrains.compose.internal.build-helpers" |
||||
version = project.property("deploy.version") as String |
||||
|
||||
repositories { |
||||
mavenCentral() |
||||
} |
||||
|
||||
plugins.withType(JavaBasePlugin::class.java) { |
||||
afterEvaluate { |
||||
configureIfExists<JavaPluginExtension> { |
||||
sourceCompatibility = JavaVersion.VERSION_1_8 |
||||
targetCompatibility = JavaVersion.VERSION_1_8 |
||||
if (sourceSets.names.contains(SourceSet.MAIN_SOURCE_SET_NAME)) { |
||||
withJavadocJar() |
||||
withSourcesJar() |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
plugins.withId("maven-publish") { |
||||
configureIfExists<PublishingExtension> { |
||||
configurePublishing(project) |
||||
} |
||||
} |
||||
} |
||||
|
||||
fun PublishingExtension.configurePublishing(project: Project) { |
||||
repositories { |
||||
configureEach { |
||||
val repoName = name |
||||
project.tasks.register("publishTo${repoName}") { |
||||
group = "publishing" |
||||
dependsOn(project.tasks.named("publishAllPublicationsTo${repoName}Repository")) |
||||
} |
||||
} |
||||
maven { |
||||
name = "BuildRepo" |
||||
url = uri("${rootProject.buildDir}/repo") |
||||
} |
||||
maven { |
||||
name = "ComposeInternalRepo" |
||||
url = uri( |
||||
System.getenv("COMPOSE_INTERNAL_REPO_URL") |
||||
?: "https://maven.pkg.jetbrains.space/public/p/compose/internal" |
||||
) |
||||
credentials { |
||||
username = |
||||
System.getenv("COMPOSE_INTERNAL_REPO_USERNAME") |
||||
?: System.getenv("COMPOSE_REPO_USERNAME") |
||||
?: "" |
||||
password = |
||||
System.getenv("COMPOSE_INTERNAL_REPO_KEY") |
||||
?: System.getenv("COMPOSE_REPO_KEY") |
||||
?: "" |
||||
} |
||||
} |
||||
} |
||||
publications { |
||||
create<MavenPublication>("main") { |
||||
groupId = project.group.toString() |
||||
artifactId = project.name |
||||
version = project.version.toString() |
||||
|
||||
from(project.components["java"]) |
||||
} |
||||
} |
||||
} |
||||
|
||||
inline fun <reified T> Project.configureIfExists(fn: T.() -> Unit) { |
||||
extensions.findByType(T::class.java)?.fn() |
||||
} |
@ -1,51 +0,0 @@
|
||||
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar |
||||
import org.gradle.kotlin.dsl.gradleKotlinDsl |
||||
|
||||
plugins { |
||||
`java` |
||||
`maven-publish` |
||||
`java-gradle-plugin` |
||||
id("org.jetbrains.kotlin.jvm") |
||||
id("com.github.johnrengelman.shadow") apply false |
||||
} |
||||
|
||||
repositories { |
||||
maven("https://maven.pkg.jetbrains.space/public/p/space/maven") |
||||
} |
||||
|
||||
val embeddedDependencies by configurations.creating { isTransitive = false } |
||||
dependencies { |
||||
compileOnly(gradleApi()) |
||||
compileOnly(gradleKotlinDsl()) |
||||
compileOnly(kotlin("stdlib")) |
||||
|
||||
fun embedded(dep: String) { |
||||
compileOnly(dep) |
||||
embeddedDependencies(dep) |
||||
} |
||||
|
||||
val jacksonVersion = "2.12.5" |
||||
implementation("com.fasterxml.jackson.dataformat:jackson-dataformat-xml:$jacksonVersion") |
||||
implementation("com.fasterxml.jackson.module:jackson-module-kotlin:$jacksonVersion") |
||||
implementation("io.ktor:ktor-client-okhttp:1.6.4") |
||||
implementation("org.apache.tika:tika-parsers:1.24.1") |
||||
implementation("org.jsoup:jsoup:1.14.3") |
||||
implementation("org.jetbrains:space-sdk-jvm:83821-beta") |
||||
embedded("de.undercouch:gradle-download-task:4.1.2") |
||||
} |
||||
|
||||
val shadowJar by tasks.registering(ShadowJar::class) { |
||||
val fromPackage = "de.undercouch" |
||||
val toPackage = "org.jetbrains.compose.internal.publishing.$fromPackage" |
||||
relocate(fromPackage, toPackage) |
||||
archiveClassifier.set("shadow") |
||||
configurations = listOf(embeddedDependencies) |
||||
from(sourceSets["main"]!!.output) |
||||
exclude("META-INF/gradle-plugins/de.undercouch.download.properties") |
||||
} |
||||
|
||||
val jar = tasks.named<Jar>("jar") { |
||||
dependsOn(shadowJar) |
||||
from(zipTree(shadowJar.get().archiveFile)) |
||||
this.duplicatesStrategy = DuplicatesStrategy.INCLUDE |
||||
} |
@ -0,0 +1,77 @@
|
||||
import org.jetbrains.compose.internal.publishing.* |
||||
|
||||
plugins { |
||||
signing |
||||
} |
||||
|
||||
val mavenCentral = MavenCentralProperties(project) |
||||
val mavenCentralGroup = project.providers.gradleProperty("maven.central.group") |
||||
val mavenCentralStage = project.providers.gradleProperty("maven.central.stage") |
||||
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(mavenCentralGroup) |
||||
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) |
||||
stagingProfileName.set(mavenCentralStage) |
||||
} |
||||
|
||||
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") |
||||
) |
||||
} |
@ -0,0 +1,26 @@
|
||||
import org.gradle.kotlin.dsl.gradleKotlinDsl |
||||
|
||||
plugins { |
||||
`java` |
||||
`java-gradle-plugin` |
||||
kotlin("jvm") version "1.9.24" |
||||
} |
||||
|
||||
repositories { |
||||
mavenCentral() |
||||
maven("https://maven.pkg.jetbrains.space/public/p/space/maven") |
||||
} |
||||
|
||||
dependencies { |
||||
compileOnly(gradleApi()) |
||||
compileOnly(gradleKotlinDsl()) |
||||
|
||||
val jacksonVersion = "2.12.5" |
||||
implementation("com.fasterxml.jackson.dataformat:jackson-dataformat-xml:$jacksonVersion") |
||||
implementation("com.fasterxml.jackson.module:jackson-module-kotlin:$jacksonVersion") |
||||
implementation("io.ktor:ktor-client-okhttp:1.6.4") |
||||
implementation("org.apache.tika:tika-parsers:1.24.1") |
||||
implementation("org.jsoup:jsoup:1.14.3") |
||||
implementation("org.jetbrains:space-sdk-jvm:83821-beta") |
||||
implementation("de.undercouch:gradle-download-task:4.1.2") |
||||
} |
@ -1,5 +1,5 @@
|
||||
distributionBase=GRADLE_USER_HOME |
||||
distributionPath=wrapper/dists |
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.1-bin.zip |
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip |
||||
zipStoreBase=GRADLE_USER_HOME |
||||
zipStorePath=wrapper/dists |
Loading…
Reference in new issue