Skip to content

Commit

Permalink
fix: populate the pom information later
Browse files Browse the repository at this point in the history
  • Loading branch information
DanySK committed Dec 7, 2024
1 parent 85ff4ef commit e8edbbf
Show file tree
Hide file tree
Showing 3 changed files with 65 additions and 33 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ package org.danilopianini.gradle.mavencentral
import io.github.gradlenexus.publishplugin.internal.StagingRepository.State.CLOSED
import kotlinx.coroutines.runBlocking
import org.danilopianini.gradle.mavencentral.MavenPublicationExtensions.signingTasks
import org.danilopianini.gradle.mavencentral.PublishPortalDeployment.Companion.DROP_TASK_NAME
import org.danilopianini.gradle.mavencentral.PublishPortalDeployment.Companion.RELEASE_TASK_NAME
import org.gradle.api.Action
import org.gradle.api.DefaultTask
import org.gradle.api.Plugin
Expand Down Expand Up @@ -349,7 +351,7 @@ internal object ProjectExtensions {
zipTask = zipMavenCentralPortal,
)
val validate =
tasks.register("validateMavenCentralPortalPublication") { validate ->
tasks.register(PublishPortalDeployment.VALIDATE_TASK_NAME) { validate ->
group = PublishingPlugin.PUBLISH_TASK_GROUP
description = "Validates the Maven Central Portal publication, uploading if needed"
validate.dependsOn(zipMavenCentralPortal)
Expand All @@ -359,33 +361,32 @@ internal object ProjectExtensions {
}
}
}
val drop =
tasks.register("dropMavenCentralPortalPublication") { drop ->
group = PublishingPlugin.PUBLISH_TASK_GROUP
description = "Drops the Maven Central Portal publication"
drop.mustRunAfter(validate)
drop.mustRunAfter(zipMavenCentralPortal)
drop.doLast {
runBlocking {
portalDeployment.drop()
}
tasks.register(DROP_TASK_NAME) { drop ->
group = PublishingPlugin.PUBLISH_TASK_GROUP
description = "Drops the Maven Central Portal publication"
drop.mustRunAfter(validate)
drop.mustRunAfter(zipMavenCentralPortal)
drop.doLast {
runBlocking {
portalDeployment.drop()
}
}
val release =
tasks.register("releaseMavenCentralPortalPublication") { release ->
group = PublishingPlugin.PUBLISH_TASK_GROUP
description = "Releases the Maven Central Portal publication"
release.mustRunAfter(validate)
release.mustRunAfter(zipMavenCentralPortal)
release.doLast {
runBlocking {
portalDeployment.release()
}
}
tasks.register(RELEASE_TASK_NAME) { release ->
group = PublishingPlugin.PUBLISH_TASK_GROUP
description = "Releases the Maven Central Portal publication"
release.mustRunAfter(validate)
release.mustRunAfter(zipMavenCentralPortal)
release.doLast {
runBlocking {
portalDeployment.release()
}
}
}
gradle.taskGraph.whenReady { taskGraph ->
check(!taskGraph.hasTask(release.get()) || !taskGraph.hasTask(drop.get())) {
"Task ${release.get().name} and ${drop.get().name} cannot be executed together"
val allTasks = taskGraph.allTasks.map { it.name }.toSet()
check(RELEASE_TASK_NAME !in allTasks || DROP_TASK_NAME !in allTasks) {
"Task $RELEASE_TASK_NAME and $DROP_TASK_NAME cannot be executed together"
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,14 +48,13 @@ class PublishOnCentral : Plugin<Project> {
publications { publications ->
val name = "${component.name}$PUBLICATION_NAME"
if (publications.none { it.name == name }) {
publications.create(name, MavenPublication::class.java) { publication ->
publications.register(name, MavenPublication::class.java) { publication ->
createdPublications += publication
publication.from(component)
project.addSourcesArtifactIfNeeded(publication, sourcesJarTask)
if (javadocJarTask is JavadocJar) {
publication.artifact(javadocJarTask)
}
publication.configurePomForMavenCentral(extension)
publication.pom.packaging = "jar"
project.configure<SigningExtension> {
sign(publication)
Expand All @@ -65,16 +64,27 @@ class PublishOnCentral : Plugin<Project> {
}
}
}
publications.withType<MavenPublication>().configureEach { publication ->
if (extension.autoConfigureAllPublications.getOrElse(true) && publication !in createdPublications) {
publication.configurePomForMavenCentral(extension)
if (publication.signingTasks(project).isEmpty()) {
project.configure<SigningExtension> {
sign(publication)
publications
.withType<MavenPublication>()
.configureEach { publication ->
if (extension.autoConfigureAllPublications.getOrElse(true) || publication in createdPublications) {
project.afterEvaluate {
project.logger.info(
"Populating data of publication {} in {}, group {}",
publication.name,
project,
project.group,
)
publication.groupId = project.group.toString()
publication.configurePomForMavenCentral(extension)
}
if (publication.signingTasks(project).isEmpty()) {
project.configure<SigningExtension> {
sign(publication)
}
}
}
}
}
}
project.tasks.withType<PublishToMavenRepository>().configureEach { publish ->
publish.mustRunAfter(project.tasks.withType<Sign>())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -175,8 +175,29 @@ data class PublishPortalDeployment(
}
}

private companion object {
/**
* Constants for the Central Portal Deployments.
*/
companion object {
/**
* The property name for the deployment id.
*/
const val PUBLISH_DEPLOYMENT_ID_PROPERTY_NAME = "publishDeploymentId"

/**
* The bundle validation task name.
*/
const val VALIDATE_TASK_NAME = "validateMavenCentralPortalPublication"

/**
* The bundle drop task name.
*/
const val DROP_TASK_NAME = "dropMavenCentralPortalPublication"

/**
* The bundle release task name.
*/
const val RELEASE_TASK_NAME = "releaseMavenCentralPortalPublication"
private const val OK = 200
private const val CREATED = 201
private const val NO_CONTENT = 204
Expand Down

0 comments on commit e8edbbf

Please sign in to comment.