Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 13 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,18 +22,20 @@ plugins {
}

nmcpAggregation {
centralPortal {
username = TODO("Create a token username at https://central.sonatype.com/account")
password = TODO("Create a token password at https://central.sonatype.com/account")
// publish manually from the portal
publishingType = "USER_MANAGED"
// or if you want to publish automatically
publishingType = "AUTOMATIC"
}

// Publish all projects that apply the 'maven-publish' plugin
publishAllProjectsProbablyBreakingProjectIsolation()
}

publishing {
centralPortal {
username = TODO("Create a token username at https://central.sonatype.com/account")
password = TODO("Create a token password at https://central.sonatype.com/account")
// publish manually from the portal
publishingType = "USER_MANAGED"
// or if you want to publish automatically
publishingType = "AUTOMATIC"
}
}
```

Call `publishAggregationToCentralPortal` to publish the aggregation:
Expand Down Expand Up @@ -65,7 +67,7 @@ plugins {
id("com.gradleup.nmcp.aggregation").version("0.1.1")
}

nmcpAggregation {
publishing {
centralPortal {
username = TODO("Create a token username at https://central.sonatype.com/account")
password = TODO("Create a token password at https://central.sonatype.com/account")
Expand Down Expand Up @@ -98,7 +100,7 @@ plugins {

// Create your publications

nmcp {
publishing {
centralPortal {
username = TODO("Create a token username at https://central.sonatype.com/account")
password = TODO("Create a token password at https://central.sonatype.com/account")
Expand Down
8 changes: 7 additions & 1 deletion src/main/kotlin/nmcp/NmcpAggregationExtension.kt
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,13 @@ import nmcp.internal.task.registerPublishTask
import org.gradle.api.Action
import org.gradle.api.Project
import org.gradle.api.file.ArchiveOperations
import org.gradle.api.plugins.ExtensionAware
import org.gradle.api.publish.PublishingExtension
import org.gradle.api.tasks.bundling.Zip

@GExtension(pluginId = "com.gradleup.nmcp.aggregation")
abstract class NmcpAggregationExtension(private val project: Project) {
internal val spec = project.objects.newInstance(CentralPortalOptions::class.java)
private val spec: CentralPortalOptions

@get:Inject
abstract val archiveOperations: ArchiveOperations
Expand All @@ -25,6 +27,10 @@ abstract class NmcpAggregationExtension(private val project: Project) {
}

init {
project.pluginManager.apply("com.gradleup.nmcp.central-portal-options")
spec = (project.extensions.getByType(PublishingExtension::class.java) as ExtensionAware)
.extensions.getByType(CentralPortalOptions::class.java)

val operations = archiveOperations
val layout = project.layout
val files = project.files(consumerConfiguration)
Expand Down
7 changes: 6 additions & 1 deletion src/main/kotlin/nmcp/NmcpExtension.kt
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,21 @@ import nmcp.internal.task.registerPublishTask
import nmcp.internal.withRequiredPlugin
import org.gradle.api.Action
import org.gradle.api.Project
import org.gradle.api.plugins.ExtensionAware
import org.gradle.api.publish.PublishingExtension
import org.gradle.api.tasks.bundling.Zip

@GExtension(pluginId = "com.gradleup.nmcp")
open class NmcpExtension(private val project: Project) {
internal val spec = project.objects.newInstance(CentralPortalOptions::class.java)
private val spec: CentralPortalOptions
// Lifecycle task to publish all the publications in the given project
private val publishAllPublicationsToCentralPortal = project.tasks.register("publishAllPublicationsToCentralPortal")

init {
project.pluginManager.apply("com.gradleup.nmcp.central-portal-options")
spec = (project.extensions.getByType(PublishingExtension::class.java) as ExtensionAware)
.extensions.getByType(CentralPortalOptions::class.java)

project.configurations.create(nmcpProducerConfigurationName) {
it.isCanBeConsumed = true
it.isCanBeResolved = false
Expand Down
14 changes: 14 additions & 0 deletions src/main/kotlin/nmcp/internal/plugins.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package nmcp.internal

import gratatouille.GPlugin
import nmcp.CentralPortalOptions
import org.gradle.api.Project
import org.gradle.api.plugins.ExtensionAware
import org.gradle.api.publish.PublishingExtension

@GPlugin("com.gradleup.nmcp.central-portal-options")
fun centralPortalOptions(target: Project) {
target.pluginManager.apply("publishing")
val publishing = target.extensions.getByType(PublishingExtension::class.java)
(publishing as ExtensionAware).extensions.create("centralPortal", CentralPortalOptions::class.java)
}
4 changes: 2 additions & 2 deletions tests/kmp/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@ dependencies {
add("nmcpAggregation", project(":module2"))
}

extensions.getByType(nmcp.NmcpAggregationExtension::class.java).apply {
centralPortal {
extensions.getByType(PublishingExtension::class.java).apply {
(this as ExtensionAware).extensions.getByType(nmcp.CentralPortalOptions::class.java).apply {
if (System.getenv("MAVEN_CENTRAL_USERNAME") == null) {
username = "placeholder"
password = "placeholedr"
Expand Down