# Release Checklist This checklist tracks what should be true before publishing outside the local Ivy repository. ## Current Scope For now the project is prepared for local Ivy publication only. ## Required Before External Publication - Add Maven publication (`maven-publish`) if publishing to Maven repositories. - Add signing for Maven Central or any repository that requires signed artifacts. - Add complete POM metadata: project name, description, URL, license, developers, and SCM coordinates. - Keep Java 21 as the public baseline and document it for consumers. - Decide whether `variants` artifact APIs are published as experimental or split into a later module. - Add Gradle plugin marker artifact generation if `plugins { id(...) version(...) }` must work. - Add a published-consumption smoke test that resolves artifacts from a temporary local repository. ## Local Ivy Release Steps 1. Ensure the Mercurial working tree is clean. 2. Run: ```bash ./gradlew clean check javadoc jar sourcesJar javadocJar --rerun-tasks ``` 3. Optionally run: ```bash ./gradlew check --configuration-cache ``` 4. Publish locally: ```bash ./gradlew publish ``` 5. Optionally smoke-publish into `/tmp` first: ```bash ./gradlew -Duser.home=/tmp/gradle-common-ivy-smoke \ :common:publishIvyPublicationToIvyRepository \ :variants:publishIvyPublicationToIvyRepository \ --rerun-tasks ``` 6. Verify `${user.home}/ivy-repo/org.implab.gradle` contains `common` and `variants` for the expected version. ## API Status - `common` is intended to be a shared utility library. - `variants` core and source APIs are pre-1.0 and should be treated as evolving. - `variantArtifacts` is experimental and may change more aggressively.