# Local Ivy Publishing

This project currently publishes only to a local Ivy repository. Maven Central,
signing, and Gradle Plugin Portal publication are intentionally out of scope for
the current preparation step.

Published Ivy descriptors include the BSD-2-Clause license metadata.

## Repository

The configured Ivy repository is:

```text
${user.home}/ivy-repo
```

This is defined in:

- `common/build.gradle`
- `variants/build.gradle`

## Verify Before Publishing

Run a full clean verification:

```bash
./gradlew clean check javadoc jar sourcesJar javadocJar --rerun-tasks
```

Optional configuration-cache smoke check:

```bash
./gradlew check --configuration-cache
```

## Publish

Publish all modules:

```bash
./gradlew publish
```

Publish modules explicitly:

```bash
./gradlew :common:publishIvyPublicationToIvyRepository \
          :variants:publishIvyPublicationToIvyRepository
```

Safe smoke publish into a temporary repository:

```bash
./gradlew -Duser.home=/tmp/gradle-common-ivy-smoke \
          :common:publishIvyPublicationToIvyRepository \
          :variants:publishIvyPublicationToIvyRepository \
          --rerun-tasks
```

## Consume Locally

Use `buildscript` classpath for now:

```groovy
buildscript {
    repositories {
        ivy {
            url "${System.properties['user.home']}/ivy-repo"
        }
        mavenCentral()
    }
    dependencies {
        classpath 'org.implab.gradle:variants:0.1.0'
    }
}

apply plugin: 'org.implab.gradle-variants'
apply plugin: 'org.implab.gradle-variants-sources'
```

The `plugins {}` DSL needs generated plugin marker artifacts and is not part of
the current local Ivy contract.

## Published Artifacts

Each module publishes:

- `<module>-<version>.jar`
- `<module>-<version>-sources.jar`
- `<module>-<version>-javadoc.jar`
- `ivy.xml`
- Gradle module metadata

## Current Coordinates

```text
org.implab.gradle:common:0.1.0
org.implab.gradle:variants:0.1.0
```
