Skip to content

adamko-dev/dev-publish-plugin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

4737376 · May 9, 2025

History

96 Commits
Feb 7, 2025
Jul 13, 2024
Jul 13, 2024
May 9, 2025
Jul 22, 2024
Mar 27, 2023
Mar 28, 2023
Mar 27, 2023
Mar 28, 2023
Jul 22, 2024
Jul 13, 2024
May 9, 2025
May 9, 2025
May 1, 2023

Repository files navigation

GitHub license Gradle Plugin Portal

Dev Publish Gradle Plugin

Dev Publish is a Gradle plugin that publishes subprojects to a project-local directory, ready for functional testing.

Why Dev Publish?

Quick Start

If a subproject already publishes Maven artifacts, then apply DevPublish using the plugin ID dev.adamko.dev-publish and the latest version.

// build.gradle.kts

plugins {
  `maven-publish`
  id("dev.adamko.dev-publish") version "$devPublishPluginVersion>"
}

Any project can depend on publications from other subprojects

// build.gradle.kts
plugins {
  id("dev.adamko.dev-publish")
}

dependencies {
  devPublication(project(":some-other-subproject"))
}

Cross-project

Dev Publish is great for cross-project publications.

Given multiple subprojects:

.
└── root/
    ├── my-java-library/    
    │   └── build.gradle.kts
    │
    ├── my-kotlin-application/
    │   └── build.gradle.kts
    │
    └── functional-tests/
        └── build.gradle.kts

Both the 'Java library' and 'Kotlin application' subprojects publish using the Maven Publish Plugin.

// my-java-library/build.gradle.kts
plugins {
  `java-library`
  `maven-publish`
  id("dev.adamko.dev-publish")
}
// my-kotlin-application/build.gradle.kts
plugins {
  application
  kotlin("jvm")
  `maven-publish`
  id("dev.adamko.dev-publish")
}

The 'functional-tests' subproject can aggregate the publications and collect them into a project-local directory, ready for testing.

// functional-tests/build.gradle.kts
plugins {
  id("dev.adamko.dev-publish")
}

dependencies {
  devPublication(project(":my-java-library"))
  devPublication(project(":my-kotlin-application"))
}

tasks.test {
  // will publish all publications from 
  // :my-java-library and :my-kotlin-application
  // into the `devPublish.devMavenRepo` directory
  dependsOn(tasks.updateDevRepo)

  // provide devMavenRepo for use in tests
  environment(
    "MAVEN_DEV_REPO" to devPublish.devMavenRepo.asFile.get().invariantSeparatorsPath
  )
}

About

Dev Publish Plugin :: publish Gradle projects for local testing

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages