Skip to content

YongGoose/Maven-Central-utility-plugins-for-Gradle

Repository files navigation

Maven Central utility plugins for Gradle

Kotlin Gradle License

A Gradle plugin that makes managing Maven POM metadata simple and consistent across multi-module projects.


🚀 Features

  • Centralized organization-wide POM management / Guide
  • Selective override per submodule / Guide
  • Artifact signing & validation before publishing to Maven Central / Guide

📦 Installation

Plugin

plugins {
  id("io.github.yonggoose.maven.central.utility.plugin.project") version "0.1.7" // Gradle plugin to apply organization-wide defaults to projects.
  id("io.github.yonggoose.maven.central.utility.plugin.setting") version "0.1.7" // Gradle plugin to apply organization-wide defaults to settings.
  id("io.github.yonggoose.maven.central.utility.plugin.check") version "0.1.7" // Gradle plugin to check artifacts.
}

Dependency

Not yet published to Maven Central. (Will be available soon.)


⚡ Quick Start

Minimal setup in build.gradle.kts:

rootProjectPom {
    groupId = "io.github.yonggoose"
    artifactId = "my-project"
    version = "1.0.0"
    name = "My Project"
    description = "A sample project"
}

Validate before publishing:

./gradlew checkProjectArtifact

🔗 Integration

Integration with Vanniktech Maven Publish Plugin

The Gradle Maven Publish Plugin (vanniktech) is a popular choice for publishing Android and Kotlin libraries to Maven Central, JCenter, and Nexus repositories.

Maven Central utility plugins for Gradle works seamlessly with it, eliminating the need to duplicate POM configurations across modules.

import io.github.yonggoose.organizationdefaults.OrganizationDefaults

plugins {
    id("java")
    id("io.github.yonggoose.maven.central.utility.plugin..project") version "0.1.6"
    id("com.vanniktech.maven.publish") version "0.34.0"
    id("maven-publish")
}

rootProjectPom {
    groupId = "io.github.yonggoose"
    artifactId = "organization-defaults"
    version = "1.0.0"
    ...
}

afterEvaluate {
    val mergedPom = project.extensions.extraProperties.get("mergedDefaults") as OrganizationDefaults

    mavenPublishing {
        coordinates(
            groupId = mergedPom.groupId,
            artifactId = mergedPom.artifactId,
            version = mergedPom.version
        )

        pom {
            name.set(mergedPom.name)
            description.set(mergedPom.description)
            url.set(mergedPom.url)
            ...
        }
    }
}

This integration shows how centralized POM management from Maven Central utility plugins for Gradle can be directly reused inside vanniktech-maven-publish, making your publishing workflow cleaner and less error-prone.


📚 Documentation

➡️ Blog Post | Demo Video

✅ Requirements

  • Gradle 8.0+
  • Kotlin DSL support

📄 License

Apache License 2.0

About

☀️ Gradle plugin that ensures smooth, error-free Maven Central publishing

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages