Bootstrap

Single project

build.gradle
plugins {
  id 'org.ysb33r.ivypot' version '2.0.2'
}

OR of you use version catalog

gradle/libs.versions.toml
[versions]
ivypot = "2.0.2"

[plugins]
ivypot = { id = "org.ysb33r.ivypot", version.ref = "ivypot" }
build.gradle
plugins {
  id alias(libs.plugins.ivypot)
}

Multi-project

In a multi-project, the plugin MUST be applied to the root project and then to each subproject for which dependencies will be collection.

build.gradle (root)
plugins {
  id 'org.ysb33r.ivypot' version '2.0.2'
}
subproject/build.gradle
plugins {
  id 'org.ysb33r.ivypot'
}

OR of you use version catalog, confiugure libs.versions.toml as above and your projects as

build.gradle (root)
plugins {
  id alias(libs.plugins.ivypot)
}
subproject/build.gradle
plugins {
  id alias(libs.plugins.ivypot)
}

Model

Two tasks are added to the root project namely generateRepoDescription and syncRemoteRepositories.

One extension called ivypot is added to the root project and every subproject where the Ivypot plugin is applied. The DSL of the extension will be slightly different depending on whether it is applied with a single project, a root project of a multi-project, or a subproject.