Yano X is the JVM extension and application ecosystem for Yano.
The build consumes published Yano artifacts and the matching ordinary Yano JVM
ZIP. For a released yanoVersion, Gradle downloads and caches the ZIP from the
matching bloxbean/yano GitHub release. yanoJvmDist remains an explicit
override for local or staged builds. The build does not invoke tasks in, copy
sources from, or assume the location of a Yano checkout.
For a released Yano version:
./gradlew distributionCheck \
-Pversion=<yano-x-version> \
-PyanoVersion=<released-yano-version>During the repository split, first publish the matching Yano checkout to Maven Local and create its ordinary JVM ZIP. No special base ZIP is required:
./gradlew publishToMavenLocal :app:yanoDistZip \
-PskipSigning=true --no-parallelThen pass the exact published version and ZIP to Yano X:
./gradlew distributionCheck \
-PuseMavenLocal=true \
-Pversion=<published-yano-version> \
-PyanoVersion=<published-yano-version> \
-PyanoJvmDist=/absolute/path/to/yano-<build-identity>.zipThis produces two reproducible JVM artifacts under
distribution/jvm/build/distributions:
yano-x-plugin-pack-<version>.zip, containing 17 conflict-free default bundles underplugins/, the alternative eUTxO ZK runtime underoptional-plugins/, and a checksummed manifest covering all 18 independently versioned runtime plugin bundles.yano-x-jvm-<version>.zip, containing the standard Yano JVM distribution, the same default and optional plugin layout, and Yano/Yano X identity manifests.
Yano X is JVM-only. verifyJvmOnlyBuild rejects native-image build or
distribution tasks, while the Yano base ZIP contract records whether its
plugin directory is supported.
mavenLocal() is disabled unless useMavenLocal=true. A missing release asset,
a ZIP whose root build identity differs from yanoVersion, or Maven artifacts
from another Yano version fail verification.
Distributions use the dependency-complete bundle outputs that are attached to
Yano X's Maven publications, so ./gradlew clean build does not first need to
resolve the project's own artifacts. CI also stages all publications in an
empty, build-scoped Maven repository using -PinternalRepository=<path>. Set
-PyanoRepository=<URL-or-path> when the requested Yano version is in a staging
repository rather than Maven Central; this read-only input is distinct from the
build-scoped Yano X publication repository.
Release rehearsal must disable Maven Local and pin every input explicitly. For an empty build-scoped repository, run the clean build and publication gates:
./gradlew clean build \
-Pversion=<yano-x-version> \
-PyanoRepository=/absolute/path/to/yano-staging \
-PyanoVersion=<staged-yano-version> \
-PyanoJvmDist=/absolute/path/to/yano-<build-identity>.zip \
-PuseMavenLocal=false
./gradlew publishAllPublicationsToInternalRepository \
-Pversion=<yano-x-version> \
-PinternalRepository=/absolute/path/to/yano-x-staging \
-PyanoRepository=/absolute/path/to/yano-staging \
-PyanoVersion=<staged-yano-version> \
-PuseMavenLocal=falseBoth release ZIPs contain LICENSE and a normalized CycloneDX 1.6 SBOM under
sbom/. Distribution verification rejects missing license metadata for any
external Maven component. The combined JVM ZIP also preserves Yano's license as
LICENSE.yano and its host SBOM as sbom/yano.cdx.json.
The default plugin directory is an activatable selection, not an indiscriminate
copy of every published alternative. The standard eUTxO runtime and the eUTxO
ZK runtime both intentionally provide app-state-machine/eutxo-ledger; to use
the ZK implementation, remove the standard eUTxO ledger bundle and copy the ZK
runtime bundle from optional-plugins/ into plugins/ on every member. Validate
the resulting set with tools/yano-plugins/bin/yano-plugins validate plugins/*.jar.
The public documentation site lives in www/ and is published at
yanox.dev. It covers app-chain concepts, a build-and-run
quickstart, the plugin framework, the generated recipe/capability/configuration
catalogs, the imported tutorials, and an AI ingestion layer
(/llms.txt, /llms-full.txt, /ai/starter-pack.md, /ai/catalog.json).
cd www && npm ci && npm run devIt is built from the markdown in docs/, which remains the source of
truth: the site imports the tutorials and state-machine references at build
time and links to the rest.
See ADR-038 for its content strategy.
See Build and test,
distributions, and the
app-chain documentation index for the independent
Yano X workflows. The Java package namespace remains
com.bloxbean.cardano.yano.appchain.*; the repository split does not rename
the app-chain technical domain.