PUBLISHING.md
99 lines
| 1.9 KiB
| text/x-minidsrc
|
MarkdownLexer
|
|
r60 | # 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 | ||||
| ``` | ||||
