elide.pkl est le manifeste du projet : il déclare les builds, les dépendances, les tests et les artefacts. Chaque
fichier commence par :
amends "elide:project.pkl"elide: désigne le schéma fourni avec l’Elide en cours d’exécution, pour ce module comme pour tous les autres
(elide:Jvm.pkl). Pour épingler une version du schéma, amendez l’URL publiée :
pkl.elide.dev/1.6.0/project.pkl.
La version en développement suit main jusqu’à sa version stable. Les versions publiées du schéma sont immuables.
Les versions correctives d’une ligne MAJOR.MINOR ne font qu’ajouter des propriétés. Une version mineure peut
supprimer, renommer ou retyper des propriétés et changer des valeurs par défaut.
| Version épinglée | Résultat |
|---|---|
| Plus ancienne que l’Elide en cours d’exécution | Cette version est utilisée ; une propriété supprimée depuis échoue en indiquant la version. |
| Plus récente que l’Elide en cours d’exécution | Autorisée ; une propriété inconnue de l’Elide en cours d’exécution échoue en indiquant la mise à jour nécessaire. |
| Autre version majeure | Refusée. |
elide project export affiche le manifeste évalué en JSON ; elide build --inspect liste ses tâches.
Métadonnées du projet
| Propriété | Rôle |
|---|---|
name, version, description | Identité du projet ; version nomme aussi les archives d’application. |
entrypoint | Fichier(s) qu’utilise elide run quand il n’en reçoit aucun. |
scripts | Commandes shell nommées pour elide run NAME. |
sources | Source sets ; voir Sources. |
dependencies | Paquets Maven, npm et PyPI ; voir Dépendances. |
jvm, kotlin, javascript | Réglages du langage et du compilateur. |
nativeImage | Accepté mais non appliqué ; définissez les options de chaque artefact. |
engine | Contextes de service ; voir Contextes du moteur. |
toolchain | Versions d’Elide acceptées ; voir Chaîne d’outils. |
dev | Informations sur les sources, MCP, serveur de développement ; voir Dev. |
web | Réglages des ressources web ; voir Web. |
artifacts | Sorties de build ; voir Artefacts. |
testing | Rapports de tests ; voir Tests. |
coverage | Couverture ; voir Tests › Couverture. |
workspace | Projets membres ; voir Espaces de travail. |
build.flags contient les valeurs de -f/--flag ; voir Options de build.
Contextes du moteur
engine {
topology = "prespawn"
contexts { spawn = "auto"; reserve = 2; min = 1; max = 16 }
}| Propriété | Signification | Défaut |
|---|---|---|
topology | "prespawn", la seule valeur. | "prespawn" |
contexts.spawn | Nombre de contextes : un entier positif, ou "auto" (cœurs physiques moins reserve, borné). | 1 |
contexts.reserve | Cœurs soustraits pour "auto" ; n’épingle aucun CPU. | 2 |
contexts.min, contexts.max | Bornes de tout nombre. | 1, aucune |
maxContexts | Nombre fixe déprécié ; incompatible avec contexts. | — |
Chaque contexte évalue le module d’entrée une fois, avec ses propres globales, avant que le serveur soit prêt.
--contexts=N|auto sur run, serve et dev remplace spawn. Plus d’un contexte nécessite Linux.
Bloc OpenTelemetry
opentelemetry {
service { name = "checkout"; version = "1.4.2"; environment = "production" }
resource { ["cloud.region"] = "us-east-1" }
destinations {
["collector"] { endpoint = "http://localhost:4317"; protocol = "grpc" }
["datadog"] { provider = "datadog"; site = "us5" }
["sentry"] { provider = "sentry" }
}
traces { sampler = "parentbased_traceidratio"; ratio = 0.25 }
metrics { interval = 30.s }
logs { level = "info" }
runtime { logs = "warn" }
}La télémétrie est désactivée tant qu’aucune destination n’existe ici, dans les variables OTEL_*/ELIDE_OTEL_* ou
dans les options --otel-*. Celles-ci remplacent ce bloc, les options en premier ; voir
Variables d’environnement d’exécution.
elide run, elide serve, elide test, elide build et elide install lisent ce bloc dans un projet ;
elide run file.js le lit dans un projet quand elide.pkl contient le mot opentelemetry. Voir
Configuration. Les identifiants ne sont jamais écrits ici : indiquez la variable
d’environnement qui les contient.
| Propriété | Signification | Défaut |
|---|---|---|
enabled | false désactive la télémétrie, quoi que dise l’environnement. | — |
service.name, .version, .namespace, .environment | Attributs de ressource service.* et deployment.. | unknown_service:elide |
resource | Attributs de ressource supplémentaires. | — |
destinations | Destinations nommées de la télémétrie. | aucune |
traces.enabled, .sampler, .ratio, .propagators | Spans de l’application. Échantillonneurs comme pour OTEL_TRACES_SAMPLER. | activé, parentbased_always_on, tracecontext + baggage |
metrics.enabled, .interval, .temporality | Métriques de l’application. | activé, 60.s, cumulative |
logs.enabled, .level, .console | Journaux de l’application ; console exporte console.*, logging de Python et les sorties similaires. | activé, info, activé |
profiles.enabled, .frequency | Profils CPU du code invité (expérimental). | désactivé, 100 par seconde |
runtime.traces, .metrics, .logs | Spans, métriques et seuil de journalisation propres à Elide. | activé, activé, warn |
propagation.baggage | Baggage W3C sur le serveur et les clients HTTP d’Elide ; voir Baggage. | désactivé |
shutdownTimeout | Délai de l’export final à la sortie. | 5.s |
Chaque destination :
| Propriété | Signification | Défaut |
|---|---|---|
provider | otlp, sentry, datadog, posthog, honeycomb ou grafana. | otlp |
endpoint | URL de base ; remplace l’hôte d’un fournisseur. /v1/<signal> est ajouté en HTTP. | http://localhost:4318 (4317 pour gRPC) |
protocol | grpc, http/protobuf ou http/json. | http/protobuf |
headers, headerEnv | En-têtes littéraux, et en-têtes lus dans des variables nommées. | — |
credential | Variable contenant la clé du fournisseur : DD_API_KEY, POSTHOG_PROJECT_TOKEN, HONEYCOMB_API_KEY, GRAFANA_. | celles listées |
dsn | Variable contenant un DSN Sentry. | SENTRY_DSN |
site | Site Datadog : us1, us3, us5, eu, ap1, ap2, gov ou un domaine. | DD_SITE, puis us1 |
region | us/eu (PostHog, Honeycomb), ou une zone Grafana Cloud comme prod-us-east-0. | us |
signals | traces, metrics, logs, profiles. | ce que le fournisseur accepte |
compression, timeout | Compression et délai des requêtes. | gzip, 10.s |
perSignal | endpoint, protocol, headers, headerEnv, compression, timeout par signal. | — |
| Fournisseur | Signaux envoyés par défaut | Également acceptés | Protocoles |
|---|---|---|---|
otlp | traces, métriques, journaux | profils | tous |
sentry | traces, journaux | — | http/protobuf |
datadog | métriques (delta), journaux | traces (aperçu de l’ingestion sans agent) | http/protobuf ; http/json sauf journaux |
posthog | journaux | traces | http/protobuf |
honeycomb | traces, métriques, journaux | — | tous |
grafana | traces, métriques, journaux | — | http/protobuf |
Les erreurs sont envoyées sous forme d’entrées de journal et d’événements de span exception, plus la métrique
elide.errors, si bien que tout fournisseur qui accepte les journaux, les traces ou les métriques les reçoit. Voir
Présentation d’OpenTelemetry pour l’utilisation et Fournisseurs
pour chaque fournisseur. Demander à un fournisseur un signal ou un protocole qu’il n’accepte pas est une erreur.
Baggage
Le serveur et les clients HTTP d’Elide propagent traceparent et tracestate. Ils ne transmettent le baggage W3C que
si vous activez une direction, car le baggage reçu d’un client est une entrée non fiable :
opentelemetry {
propagation {
baggage {
inbound = true
outbound = true
allow { "tenant"; "region" }
spanAttributes { "tenant" }
}
}
}| Propriété | Signification | Défaut |
|---|---|---|
inbound | Les en-têtes baggage des requêtes servies deviennent le baggage du gestionnaire. | false |
outbound | Les requêtes sortantes de fetch et du client HTTP portent le baggage courant, sauf si la requête définit elle-même baggage. | false |
allow | Clés autorisées dans les deux directions. | toutes les clés |
spanAttributes | Clés entrantes enregistrées sur le span serveur en tant que baggage.<key> ; chacune doit figurer dans allow. | aucune |
Un en-tête de plus de 8 192 octets ou 180 membres, ou contenant un membre mal formé, est entièrement ignoré. Le baggage
reçu d’un client n’atteint les requêtes sortantes que si les deux directions sont activées. Le code de l’application
peut toujours lire, définir et envoyer du baggage via l’API OpenTelemetry ; OTEL_PROPAGATORS n’affecte que cette API.
Sources
sources {
["main"] = "lib/**/*.kt"
["integrationTest"] {
type = "test"
dependsOn { "main" }
paths { "it/**/*.kt" }
resources { "it/fixtures"; new { from = "it/config"; into = "META-INF" } }
}
}| Propriété | Signification | Vide ou absente |
|---|---|---|
type | "source", "test", "example" ou "other". | Déduit du nom. |
paths | Globs ou répertoires. | src/<name>/<language>. |
resources | Chemins, ou racines new { from; into }. | src/<name>/resources. |
dependsOn | Source sets visibles depuis celui-ci. | Absente : les source sets de test et d’exemple voient main. Vide : aucun. |
Voir Source sets.
Dépendances
dependencies {
maven {
packages { "com.google.guava:guava:33.5.0-jre" }
testPackages { "org.junit.jupiter:junit-jupiter:5.13.4" }
substitutions { ["com.google.guava:guava"] = "libs/guava-patched.jar" }
}
npm { packages { "react@19.0.0" }; devPackages { "typescript@5.6.2" } }
pypi { packages { "requests>=2" }; optionalPackages { ["dev"] { "pytest>=8" } } }
spring { version = "4.0.0"; starter { "web" }; testStarter { "test" } }
}| Bloc | Propriétés |
|---|---|
maven | packages, devPackages, modules, compileOnly, runtimeOnly, processors, testPackages, kotlinPlugins, exclusions, substitutions, repositories, enableDefaultRepositories, localRepository |
npm | packages, devPackages |
pypi | packages, optionalPackages (groupes nommés) ; elide install ne les installe pas. |
spring | version, starter, testStarter ; se développe en maven. |
| Valeur | Forme |
|---|---|
| Entrée Maven | "group:artifact:version[:classifier]", un MavenPackageSpec (group, name, version, classifier ou coordinate), un chemin de JAR local, ou une référence de projet. |
| Dépôt | Une URL, ou une spécification avec url, name, description, credentials (username, password, ntlmDomain, ntlmWorkstation). |
Clé de substitutions | group:artifact (toute version) ou group:artifact:version ; la valeur est un chemin de fichier. |
Une substitution conserve les dépendances transitives de la coordonnée et la remplace par le fichier sur chaque classpath. Les chemins sont résolus par rapport au manifeste qui les déclare ; les membres héritent de ceux de la racine. La tâche qui génère le fichier doit s’exécuter avant. Groupes et dépôts : Dépendances.
JVM
jvm {
main = "example.Main"
target = 25
flags { "--add-opens=java.base/java.lang=ALL-UNNAMED" }
defs { ["app.env"] = "dev" }
java { release = 25; compiler { flags { "-Xlint:all" } } }
}| Propriété | Signification | Défaut |
|---|---|---|
main | Classe point d’entrée pour elide run, les JAR, les applications et les images natives. | — |
target | Cible de bytecode : 8 … 29, 1.8, "latest", "stable" ou "auto". | "auto" (21) |
javaHome | Java home pour les compilations externes et les JVM forkées. | celui d’Elide |
preferBali | Les exécutions sur une JVM externe lancent bali depuis le PATH au lieu de java, ou avertissent et utilisent java. | false |
features.testing | Dépendances JUnit sur les source sets de test. | true |
features.automodules | Modules automatiques pour les JAR sans descripteur. | true |
features.graalvm | API du SDK org.graalvm sur le classpath de compilation. | false |
java.source, java.release | Niveaux de source et de --release ; voir Compilateur Java. | "auto" |
java.compiler.mode | "embedded" ou "external". | "embedded" |
java.compiler.flags | Options javac supplémentaires. | aucune |
java.sourceSets | release et flags par source set ; voir Compilateur Java. | aucun |
flags | Options JVM pour elide run, la JVM de test et les scripts de démarrage. | aucune |
defs | Propriétés système (-D), appliquées partout où les flags le sont. | aucune |
debug | Compiler avec -g. | true |
Kotlin
kotlin {
apiLevel = "auto"
languageLevel = "auto"
compilerOptions { allWarningsAsErrors = true; optIn { "kotlin.time.ExperimentalTime" } }
features { serialization = true; metro = false }
toolchain = "embedded"
plugins { ["org.jetbrains.kotlinx.serialization"] { ["mode"] = "json" } }
}| Propriété | Signification |
|---|---|
apiLevel, languageLevel | "auto", "latest", "stable" ou "1.9" … "2.5". |
compilerOptions | optIn, progressiveMode, extraWarnings, allWarningsAsErrors, suppressWarnings, verbose, freeCompilerArgs, apiVersion, languageVersion, includeRuntime, noStdlib, javaParameters, jvmTarget, noJdk, jvmTargetValidationMode, incremental |
features | testing, kotlinx, defaultPlugins, serialization, coroutines, atomicfu, powerAssert, metro, reflection |
toolchain | "embedded", new Kotlin. ou new Kotlin.. |
plugins | Options par identifiant de plugin du compilateur, passées sous la forme -P plugin:<id>:<key>=. |
Valeurs par défaut : Compilateur Kotlin.
JavaScript
| Propriété | Signification | Défaut |
|---|---|---|
javascript.ecma | Édition ECMAScript déclarée : une année 2015 … 2025, "stable" ou "latest". elide project info l’affiche ; elle ne change ni la syntaxe exécutée ni la façon dont le code est construit (Langage JavaScript). | "stable" |
Chaîne d’outils
toolchain { engines { ["elide"] = ">=1.6.0" } }| Propriété | Signification |
|---|---|
engines["elide"] | Version ou plage semver, ou new { version = "…" } ; un Elide en cours d’exécution hors de cette plage échoue à la validation. |
engines[<other>] | Accepté, non appliqué. |
Dev
dev {
source { platform = "github"; project = "example/app" }
mcp {
registerElide = true
advice = true
resources { new { path = "docs/ARCHITECTURE.md"; name = "architecture" } }
}
}| Propriété | Signification | Défaut |
|---|---|---|
source.platform, source.project, source.subpath | Hébergeur des sources : "github", "gitlab", "bitbucket", "git" ou un autre nom. | — |
mcp.registerElide | Enregistrer Elide comme outil MCP. | true |
mcp.advice | Exposer elide project advice comme ressource MCP. | true |
mcp.resources | Ressources MCP supplémentaires : path, name, description, mimeType (détecté s’il est omis). | aucune |
server.host, server.port | Inutilisés par elide dev, qui prend --host/--port (par défaut 127.0.0.1:3000). | "0.0.0.0", 8080 |
Web
| Propriété | Signification | Défaut |
|---|---|---|
web.css.minify | Minifier le CSS construit. | true |
web.css.targets | Navigateurs cibles : new { browser = "chrome"; version = "120" }. | aucun |
web.minifyHtml | Minifier le HTML rendu. | true |
web.browsers | Navigateurs cibles pour toutes les sorties ; css.targets le remplace pour le CSS. | aucun |
Voir Chaîne d’outils Web.
Artefacts
import "elide:Jvm.pkl" as Jvm
artifacts {
["app"] = new Jvm.Jar {
name = "app.jar"
options { entrypoint = "example.Main" }
sources { "main" } // optional; empty packages every non-test source set
}
}La clé nomme la tâche de build. Les sorties vont dans .dev/artifacts/<kind>/.
| Type | Module | Champs |
|---|---|---|
Jar, SourceJar, JavadocJar, JvmApplication | elide:Jvm.pkl | Assemblage JAR |
NativeImage | elide:NativeImage.pkl | Native Image |
WebImage | elide:NativeImage.pkl | WebImage |
ContainerImage | elide:Container.pkl | Conteneurs JVM |
StaticSite | elide:Web.pkl | Sites statiques |
| Champ commun | Signification |
|---|---|
dependsOn | Noms des artefacts à construire d’abord. |
name (JAR) | "app" et "app.jar" donnent tous deux app.jar ; un SourceJar donne app-sources.jar. |
WebImage
WebImage reprend les champs NativeImage from, name,
entrypoint, moduleName, dependsOn et options, n’a pas de type et ajoute :
| Propriété | Valeurs | Défaut |
|---|---|---|
backend | "wasm-gc" (GC de l’hôte) ou "wasm-lm" (mémoire linéaire). | "wasm-gc" |
runtime | "generic", "browser" ou "node". | "generic" |
autoRun | Démarrer le programme au chargement du loader. | true |
sourceMap | Émettre une source map JavaScript. | false |
entrypoint (ou jvm.main) est requis même avec autoRun = false. Ne passez pas d’options brutes pour ces quatre
réglages. Guide : WebImage ; artefacts définis par options :
migration.
Publication
publishing {
maven {
groupId = "dev.example"
artifactId = "example" // default: the project name
localRepository = "~/.m2/repository" // the default
artifacts { "lib"; "lib-sources" } // default: every Jar, SourceJar and JavadocJar
pom {
name = "Example"
description = "An example library." // default: the project description
url = "https://example.dev"
licenses { new { name = "Apache-2.0"; url = "https://www.apache.org/licenses/LICENSE-2.0" } }
developers { new { id = "jdoe"; name = "J. Doe" } }
scm { url = "https://github.com/example/example" }
}
repositories {
["internal"] = "https://repo.example.dev/releases" // or new Jvm.MavenRepositorySpec { url = … }
["central"] = new Publishing.CentralPortal {} // Maven Central; import "elide:Publishing.pkl" as Publishing
}
signing { gpg { keyName = "0123ABCD" } } // optional; omit keyName for gpg's default key
}
}elide publish construit les JAR sélectionnés et les installe avec un POM dans le dépôt Maven local. La version est la
version du projet. Une publication nécessite un groupId, une version et exactement un Jar. Un SourceJar est
publié sous son classifier (par défaut sources), un JavadocJar sous javadoc. Un localRepository relatif est
résolu par rapport au manifeste qui le déclare.
| Manifeste | POM publié |
|---|---|
packages, modules | Dépendances compile |
runtimeOnly | Dépendances runtime |
compileOnly, devPackages, processors, kotlinPlugins, testPackages | Omis |
exclusions sans version | Un <exclusion> sur chaque dépendance |
| Un projet frère | Les coordonnées de publication propres au projet frère |
Un projet frère dans Jar.from | Ses packages, modules et runtimeOnly, sauf s’ils sont déjà listés |
| Un chemin de JAR local | Une erreur ; les consommateurs ne peuvent pas le résoudre |
Le POM liste aussi, en tant que dépendances compile, les bibliothèques qu’Elide place sur le classpath d’un projet
Kotlin sans déclaration, car les consommateurs en ont besoin à l’exécution : kotlin-stdlib et kotlin-reflect dans la
version Kotlin du projet, et les bibliothèques d’exécution qu’active kotlin.features (kotlinx-coroutines-core,
kotlinx-serialization, le runtime Metro). Elles figurent dans le POM publié même si elide.pkl ne les nomme pas.
Désactivez-en une là d’où elle vient (kotlin.features ou kotlin.compilerOptions.noStdlib), ou déclarez-la vous-même
pour épingler une autre version. jvm.features.graalvm ajoute le SDK GraalVM avec la portée runtime.
elide publish --to <name> publie plutôt dans un dépôt de repositories, avec des sommes de contrôle .md5, .sha1,
.sha256 et .sha512 pour chaque fichier. Les identifiants viennent de ELIDE_MAVEN_<NAME>_USERNAME et
ELIDE_MAVEN_<NAME>_PASSWORD, où <NAME> est le nom du dépôt en majuscules, chaque caractère autre qu’une lettre ou un
chiffre étant remplacé par _ (internal → ELIDE_MAVEN_INTERNAL_USERNAME, my-repo → ELIDE_MAVEN_MY_REPO_…), et
sinon des credentials du dépôt. Deux noms qui correspondent aux mêmes variables (my-repo et my_repo) sont refusés.
Les dépôts en http:// simple autres que localhost sont refusés sans --allow-http-repositories.
Si signing est défini, une publication distante signe chaque fichier avec le programme gpg (<file>.asc) ;
signing {} signe avec la clé par défaut de gpg, et signing { gpg { keyName = "…" } } en choisit une. Une
publication locale ne signe qu’avec --sign, et --no-sign désactive la signature. gpg-agent demande la phrase
secrète. En CI, définissez ELIDE_GPG_PASSPHRASE ; Elide la transmet à gpg via le pinentry en mode loopback. Elide ne
lit jamais la clé lui-même.
Un dépôt CentralPortal publie sur Maven Central via le Central Publisher Portal. Créez un jeton utilisateur dans le
Portal et passez-le comme ELIDE_MAVEN_<NAME>_USERNAME et ELIDE_MAVEN_<NAME>_PASSWORD. Tous les projets de
l’exécution vont dans un seul bundle signé et accompagné de sommes de contrôle, et dans un seul déploiement, que le
Portal valide et publie comme un tout. Elide attend que le Portal l’ait validé, et échoue avec les erreurs du Portal si
la validation ne passe pas. --no-wait rend la main juste après l’envoi.
Propriété de CentralPortal | Signification | Défaut |
|---|---|---|
publishingType | USER_MANAGED : vous publiez vous-même le déploiement validé dans le Portal. AUTOMATIC : publication dès la validation. | USER_MANAGED |
url | Portal vers lequel envoyer. | https:/ |
Avant le build, Elide vérifie ce qu’exige Central et signale tout ce qui manque en une fois : name, description,
url, licenses, developers et scm.url de pom ; un artefact SourceJar et un artefact JavadocJar ; la
signature (donc --no-sign est refusé) ; et une version autre que -SNAPSHOT.
Dans un espace de travail, les membres héritent du bloc publishing de la racine sauf artifactId et artifacts, et
les réglages propres d’un membre l’emportent champ par champ. Les dépôts sont hérités par nom. Un projet qui ne
construit aucun JAR ne publie rien de ce dont il hérite.
Pour ne publier que certains projets d’un espace de travail, nommez-les (elide publish core util) au lieu de modifier
leurs blocs publishing, ou passez --skip-existing pour ignorer toute version déjà présente dans la cible ; voir
elide publish.
Tests
import "elide:Testing.pkl" as Testing
testing { reports { Testing.xmlReport() } }| Propriété | Signification |
|---|---|
testing.reports | Formats de rapport pour tous les exécuteurs, écrits dans . ; équivaut à --reporter=junit. |
Couverture
import "elide:Coverage.pkl" as Coverage
coverage {
enabled = true
scope = "tests"
jvm {
excludes { "org.example.generated.*" }
reports { Coverage.xmlReport(); Coverage.htmlReport() }
}
js { paths { "src" } }
}| Propriété | Signification | Défaut |
|---|---|---|
coverage.enabled | Collecter la couverture sans --coverage. | false |
coverage.scope | Tâches qui collectent : "tests", "runs" ou "all". --coverage couvre toujours la tâche à laquelle il est passé. | "tests" |
coverage.jvm.reports | Formats de rapport JVM : Coverage.htmlReport(), xmlReport(), csvReport(), écrits dans .. | aucun |
coverage.jvm.excludes | Motifs de noms de classe (*, ?) non instrumentés, comme le code généré. | aucun |
coverage.js.paths | Racines de sources JavaScript et TypeScript à couvrir, rapportées en LCOV dans .. Vide : tout le projet. | aucune |
Voir Tests › Couverture.
Espaces de travail
workspace { members { "core"; "app" } }Chaque membre est un répertoire avec son propre elide.pkl ; les membres ne peuvent pas avoir de membres.
elide init --template workspace crée une racine avec une bibliothèque core et une app qui en dépend.
| Comportement | Règle |
|---|---|
| Portée du build | Depuis la racine, elide build/elide test couvrent tous les projets ; depuis un membre, ce membre seulement. |
| Tâches inter-projets | elide build core:compile-kotlin-main, ou elide build core pour ses tâches par défaut. |
| État partagé | Les dépendances résolues et l’état du build résident dans le .dev de la racine ; les sorties restent dans le .dev de chaque projet. |
| Versions épinglées | Un membre peut omettre une version Maven et reprendre celle de la racine ; une version en conflit est une erreur. |
// core/elide.pkl
import "elide:Jvm.pkl" as Jvm
dependencies {
maven {
packages { "com.google.guava:guava" } // version from the root
}
}
artifacts {
["jar"] = new Jvm.Jar { name = "core" }
}// app/elide.pkl
local core = project("core")
dependencies { maven { packages { core } } }| Référence | Signification |
|---|---|
project("core") | L’artefact Jvm.Jar du projet et son classpath de compilation, construit si nécessaire. Des sources JVM seules ne comptent pas. |
project("core"). | Choisir un JAR quand le projet en déclare plusieurs. |
project("core"). | Voir aussi les déclarations Kotlin internal de core, pas celles de ses dépendances. Seulement dans packages, modules, compileOnly, testPackages. |
new Jvm. | Décompresser le JAR de core dans celui-ci, en le construisant d’abord ; aucune dépendance nécessaire. |
module.project("core") | À utiliser sur place, dans le corps d’un objet ; un project(…) nu ne s’y résout pas. |
new Artifacts. | Forme explicite ; import "elide:Artifacts.. |
Une référence à un projet sans JAR, ou un friend() mal placé, échoue lors de la configuration du build.