elide.pkl es el manifiesto del proyecto: declara compilaciones, dependencias, pruebas y artefactos. Todo archivo
empieza con:
amends "elide:project.pkl"elide: apunta al esquema incluido en el Elide en ejecución, para este y cualquier otro módulo (elide:Jvm.pkl).
Para fijar una versión del esquema, enmiende la URL publicada:
pkl.elide.dev/1.6.0/project.pkl.
La versión en desarrollo sigue a main hasta su versión estable. Las versiones publicadas del esquema son inmutables.
Las versiones de parche dentro de una línea MAJOR.MINOR solo añaden propiedades. Una versión menor puede eliminar,
renombrar o cambiar el tipo de propiedades y cambiar valores predeterminados.
| Versión fijada | Resultado |
|---|---|
| Anterior al Elide en ejecución | Se usa esa versión; una propiedad eliminada desde entonces falla e indica la versión. |
| Posterior al Elide en ejecución | Permitido; una propiedad que el Elide en ejecución no conoce falla e indica la actualización necesaria. |
| Otra versión mayor | Rechazada. |
elide project export imprime el manifiesto evaluado como JSON; elide build --inspect lista sus tareas.
Metadatos del proyecto
| Propiedad | Propósito |
|---|---|
name, version, description | Identidad del proyecto; version también da nombre a los archivos de la aplicación. |
entrypoint | Archivo(s) que usa elide run cuando no recibe ninguno. |
scripts | Comandos de shell con nombre para elide run NAME. |
sources | Conjuntos de fuentes; consulte Fuentes. |
dependencies | Paquetes de Maven, npm y PyPI; consulte Dependencias. |
jvm, kotlin, javascript | Ajustes del lenguaje y del compilador. |
nativeImage | Se acepta pero no se aplica; defina las options de cada artefacto. |
engine | Contextos de servicio; consulte Contextos del motor. |
toolchain | Versiones de Elide aceptadas; consulte Cadena de herramientas. |
dev | Información del código fuente, MCP, servidor de desarrollo; consulte Dev. |
web | Ajustes de recursos web; consulte Web. |
artifacts | Salidas de compilación; consulte Artefactos. |
testing | Informes de pruebas; consulte Pruebas. |
coverage | Cobertura; consulte Pruebas › Cobertura. |
workspace | Proyectos miembros; consulte Espacios de trabajo. |
build.flags contiene los valores de -f/--flag; consulte Opciones de compilación.
Contextos del motor
engine {
topology = "prespawn"
contexts { spawn = "auto"; reserve = 2; min = 1; max = 16 }
}| Propiedad | Significado | Predeterminado |
|---|---|---|
topology | "prespawn", el único valor. | "prespawn" |
contexts.spawn | Número de contextos: un entero positivo, o "auto" (núcleos físicos menos reserve, acotado). | 1 |
contexts.reserve | Núcleos que se restan para "auto"; no fija CPU. | 2 |
contexts.min, contexts.max | Límites para cualquier número. | 1, ninguno |
maxContexts | Número fijo obsoleto; no se puede combinar con contexts. | — |
Cada contexto evalúa el módulo de entrada una vez, con sus propios globales, antes de que el servidor esté listo.
--contexts=N|auto en run, serve y dev anula spawn. Más de un contexto requiere Linux.
Bloque de 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 telemetría está desactivada hasta que exista un destino aquí, en variables OTEL_*/ELIDE_OTEL_* o en opciones
--otel-*. Estas anulan este bloque, las opciones primero; consulte
Variables de entorno del runtime.
elide run, elide serve, elide test, elide build y elide install leen este bloque dentro de un proyecto;
elide run file.js dentro de un proyecto lo lee cuando elide.pkl contiene la palabra opentelemetry. Consulte
Configuración. Las credenciales nunca se escriben aquí: indique la variable de entorno
que las contiene.
| Propiedad | Significado | Predeterminado |
|---|---|---|
enabled | false desactiva la telemetría, diga lo que diga el entorno. | — |
service.name, .version, .namespace, .environment | Atributos de recurso service.* y deployment.. | unknown_service:elide |
resource | Atributos de recurso adicionales. | — |
destinations | Destinos con nombre a los que enviar telemetría. | ninguno |
traces.enabled, .sampler, .ratio, .propagators | Spans de la aplicación. Muestreadores como en OTEL_TRACES_SAMPLER. | activado, parentbased_always_on, tracecontext + baggage |
metrics.enabled, .interval, .temporality | Métricas de la aplicación. | activado, 60.s, cumulative |
logs.enabled, .level, .console | Registros de la aplicación; console exporta console.*, logging de Python y salidas similares. | activado, info, activado |
profiles.enabled, .frequency | Perfiles de CPU del código invitado (experimental). | desactivado, 100 por segundo |
runtime.traces, .metrics, .logs | Spans, métricas y umbral de registro propios de Elide. | activado, activado, warn |
propagation.baggage | Baggage W3C en el servidor y los clientes HTTP de Elide; consulte Baggage. | desactivado |
shutdownTimeout | Plazo de la exportación final al salir. | 5.s |
Cada destino:
| Propiedad | Significado | Predeterminado |
|---|---|---|
provider | otlp, sentry, datadog, posthog, honeycomb o grafana. | otlp |
endpoint | URL base; sustituye el host de un proveedor. Con HTTP se añade /v1/<signal>. | http://localhost:4318 (4317 para gRPC) |
protocol | grpc, http/protobuf o http/json. | http/protobuf |
headers, headerEnv | Cabeceras literales y cabeceras leídas de variables con nombre. | — |
credential | Variable con la clave del proveedor: DD_API_KEY, POSTHOG_PROJECT_TOKEN, HONEYCOMB_API_KEY, GRAFANA_. | las indicadas |
dsn | Variable con un DSN de Sentry. | SENTRY_DSN |
site | Sitio de Datadog: us1, us3, us5, eu, ap1, ap2, gov o un dominio. | DD_SITE, luego us1 |
region | us/eu (PostHog, Honeycomb), o una zona de Grafana Cloud como prod-us-east-0. | us |
signals | traces, metrics, logs, profiles. | lo que acepte el proveedor |
compression, timeout | Compresión y plazo de las peticiones. | gzip, 10.s |
perSignal | endpoint, protocol, headers, headerEnv, compression, timeout por señal. | — |
| Proveedor | Señales enviadas por defecto | También acepta | Protocolos |
|---|---|---|---|
otlp | trazas, métricas, registros | perfiles | todos |
sentry | trazas, registros | — | http/protobuf |
datadog | métricas (delta), registros | trazas (vista previa de ingesta sin agente) | http/protobuf; http/json salvo registros |
posthog | registros | trazas | http/protobuf |
honeycomb | trazas, métricas, registros | — | todos |
grafana | trazas, métricas, registros | — | http/protobuf |
Los errores se envían como entradas de registro y eventos de span exception, además de la métrica elide.errors,
de modo que todo proveedor que acepte registros, trazas o métricas los recibe. Consulte
Descripción general de OpenTelemetry para el uso y Proveedores para cada
proveedor. Pedir a un proveedor una señal o un protocolo que no acepta es un error.
Baggage
El servidor y los clientes HTTP de Elide propagan traceparent y tracestate. Solo transmiten baggage W3C cuando
usted activa una dirección, porque el baggage que llega de un cliente es una entrada no confiable:
opentelemetry {
propagation {
baggage {
inbound = true
outbound = true
allow { "tenant"; "region" }
spanAttributes { "tenant" }
}
}
}| Propiedad | Significado | Predeterminado |
|---|---|---|
inbound | Las cabeceras baggage de las peticiones atendidas pasan a ser el baggage del manejador. | false |
outbound | Las peticiones salientes de fetch y del cliente HTTP llevan el baggage actual, salvo que la petición defina baggage por sí misma. | false |
allow | Claves permitidas en ambas direcciones. | todas las claves |
spanAttributes | Claves entrantes registradas en el span del servidor como baggage.<key>; cada una debe estar en allow. | ninguna |
Una cabecera de más de 8192 bytes o 180 miembros, o con algún miembro mal formado, se descarta entera. El baggage
recibido de un cliente llega a las peticiones salientes solo cuando ambas direcciones están activadas. El código de la
aplicación siempre puede leer, definir y enviar baggage mediante la API de OpenTelemetry; OTEL_PROPAGATORS solo afecta
a esa API.
Fuentes
sources {
["main"] = "lib/**/*.kt"
["integrationTest"] {
type = "test"
dependsOn { "main" }
paths { "it/**/*.kt" }
resources { "it/fixtures"; new { from = "it/config"; into = "META-INF" } }
}
}| Propiedad | Significado | Vacía o ausente |
|---|---|---|
type | "source", "test", "example" u "other". | Se deduce del nombre. |
paths | Globs o directorios. | src/<name>/<language>. |
resources | Rutas, o raíces new { from; into }. | src/<name>/resources. |
dependsOn | Conjuntos de fuentes visibles para este. | Ausente: los conjuntos de prueba y de ejemplo ven main. Vacía: nada. |
Consulte Conjuntos de fuentes.
Dependencias
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" } }
}| Bloque | Propiedades |
|---|---|
maven | packages, devPackages, modules, compileOnly, runtimeOnly, processors, testPackages, kotlinPlugins, exclusions, substitutions, repositories, enableDefaultRepositories, localRepository |
npm | packages, devPackages |
pypi | packages, optionalPackages (grupos con nombre); elide install no los instala. |
spring | version, starter, testStarter; se expande en maven. |
| Valor | Forma |
|---|---|
| Entrada de Maven | "group:artifact:version[:classifier]", un MavenPackageSpec (group, name, version, classifier o coordinate), una ruta a un JAR local o una referencia a un proyecto. |
| Repositorio | Una URL, o una especificación con url, name, description, credentials (username, password, ntlmDomain, ntlmWorkstation). |
Clave de substitutions | group:artifact (cualquier versión) o group:artifact:version; el valor es una ruta de archivo. |
Una sustitución conserva las dependencias transitivas de la coordenada y la reemplaza por el archivo en todos los classpaths. Las rutas se resuelven respecto al manifiesto que las declara; los miembros heredan las de la raíz. La tarea que genera el archivo debe ejecutarse antes. Grupos y repositorios: Dependencias.
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" } } }
}| Propiedad | Significado | Predeterminado |
|---|---|---|
main | Clase de punto de entrada para elide run, JAR, aplicaciones e imágenes nativas. | — |
target | Destino de bytecode: 8 … 29, 1.8, "latest", "stable" o "auto". | "auto" (21) |
javaHome | Java home para compilaciones externas y JVM en procesos separados. | el de Elide |
preferBali | Las ejecuciones en una JVM externa lanzan bali desde PATH en lugar de java, o avisan y usan java. | false |
features.testing | Dependencias de JUnit en los conjuntos de prueba. | true |
features.automodules | Módulos automáticos para JAR sin descriptor. | true |
features.graalvm | API del SDK org.graalvm en el classpath de compilación. | false |
java.source, java.release | Niveles de código fuente y de --release; consulte Compilador Java. | "auto" |
java.compiler.mode | "embedded" o "external". | "embedded" |
java.compiler.flags | Opciones adicionales de javac. | ninguna |
java.sourceSets | release y flags por conjunto de fuentes; consulte Compilador Java. | ninguno |
flags | Opciones de la JVM para elide run, la JVM de pruebas y los scripts de inicio. | ninguna |
defs | Propiedades del sistema (-D), aplicadas allí donde se aplican las flags. | ninguna |
debug | Compilar con -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" } }
}| Propiedad | Significado |
|---|---|
apiLevel, languageLevel | "auto", "latest", "stable" o "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. o new Kotlin.. |
plugins | Opciones por id de plugin del compilador, pasadas como -P plugin:<id>:<key>=. |
Valores predeterminados: Compilador Kotlin.
JavaScript
| Propiedad | Significado | Predeterminado |
|---|---|---|
javascript.ecma | Edición de ECMAScript declarada: un año 2015 … 2025, "stable" o "latest". elide project info la muestra; no cambia qué sintaxis se ejecuta ni cómo se compila el código (Lenguaje JavaScript). | "stable" |
Cadena de herramientas
toolchain { engines { ["elide"] = ">=1.6.0" } }| Propiedad | Significado |
|---|---|
engines["elide"] | Versión o rango semver, o new { version = "…" }; un Elide en ejecución fuera de él no pasa la validación. |
engines[<other>] | Se acepta, no se aplica. |
Dev
dev {
source { platform = "github"; project = "example/app" }
mcp {
registerElide = true
advice = true
resources { new { path = "docs/ARCHITECTURE.md"; name = "architecture" } }
}
}| Propiedad | Significado | Predeterminado |
|---|---|---|
source.platform, source.project, source.subpath | Alojamiento del código fuente: "github", "gitlab", "bitbucket", "git" u otro nombre. | — |
mcp.registerElide | Registrar Elide como herramienta MCP. | true |
mcp.advice | Exponer elide project advice como recurso MCP. | true |
mcp.resources | Recursos MCP adicionales: path, name, description, mimeType (se detecta si se omite). | ninguno |
server.host, server.port | elide dev no los usa; recibe --host/--port (por defecto 127.0.0.1:3000). | "0.0.0.0", 8080 |
Web
| Propiedad | Significado | Predeterminado |
|---|---|---|
web.css.minify | Minificar el CSS compilado. | true |
web.css.targets | Navegadores de destino: new { browser = "chrome"; version = "120" }. | ninguno |
web.minifyHtml | Minificar el HTML renderizado. | true |
web.browsers | Navegadores de destino para todas las salidas; css.targets lo anula para CSS. | ninguno |
Consulte Cadena de herramientas web.
Artefactos
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 clave da nombre a la tarea de compilación. Las salidas van a .dev/artifacts/<kind>/.
| Tipo | Módulo | Campos |
|---|---|---|
Jar, SourceJar, JavadocJar, JvmApplication | elide:Jvm.pkl | Ensamblado de JAR |
NativeImage | elide:NativeImage.pkl | Native Image |
WebImage | elide:NativeImage.pkl | WebImage |
ContainerImage | elide:Container.pkl | Contenedores JVM |
StaticSite | elide:Web.pkl | Sitios estáticos |
| Campo común | Significado |
|---|---|
dependsOn | Nombres de artefactos que se compilan antes. |
name (JAR) | "app" y "app.jar" dan ambos app.jar; un SourceJar da app-sources.jar. |
WebImage
WebImage admite los campos de NativeImage from, name,
entrypoint, moduleName, dependsOn y options, no tiene type y añade:
| Propiedad | Valores | Predeterminado |
|---|---|---|
backend | "wasm-gc" (GC del host) o "wasm-lm" (memoria lineal). | "wasm-gc" |
runtime | "generic", "browser" o "node". | "generic" |
autoRun | Iniciar el programa cuando se carga el cargador. | true |
sourceMap | Generar un source map de JavaScript. | false |
entrypoint (o jvm.main) es obligatorio incluso con autoRun = false. No pase opciones sin procesar para estos
cuatro ajustes. Guía: WebImage; artefactos basados en opciones:
migración.
Publicación
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 compila los JAR seleccionados y los instala con un POM en el repositorio local de Maven. La versión es
la version del proyecto. Una publicación necesita un groupId, una version y exactamente un Jar. Un SourceJar
se publica con su classifier (por defecto sources), un JavadocJar con javadoc. Un localRepository relativo se
resuelve respecto al manifiesto que lo declara.
| Manifiesto | POM publicado |
|---|---|
packages, modules | Dependencias compile |
runtimeOnly | Dependencias runtime |
compileOnly, devPackages, processors, kotlinPlugins, testPackages | Omitidos |
exclusions sin versión | Un <exclusion> en cada dependencia |
| Un proyecto hermano | Las coordenadas de publicación propias del hermano |
Un proyecto hermano en Jar.from | Sus packages, modules y runtimeOnly, salvo que ya figuren |
| Una ruta a un JAR local | Un error; los consumidores no pueden resolverla |
El POM también lista, como dependencias compile, las bibliotecas que Elide pone en el classpath de un proyecto Kotlin
sin declararlas, porque los consumidores las necesitan en tiempo de ejecución: kotlin-stdlib y kotlin-reflect en la
versión de Kotlin del proyecto, y los entornos de ejecución que activa kotlin.features (kotlinx-coroutines-core,
kotlinx-serialization, el entorno de ejecución de Metro). Aparecen en el POM publicado aunque elide.pkl no los
nombre. Desactive uno donde se origina (kotlin.features o kotlin.compilerOptions.noStdlib), o declárelo usted mismo
para fijar otra versión. jvm.features.graalvm añade el SDK de GraalVM con ámbito runtime.
elide publish --to <name> publica en cambio en un repositorio de repositories, con sumas de verificación .md5,
.sha1, .sha256 y .sha512 para cada archivo. Las credenciales se toman de ELIDE_MAVEN_<NAME>_USERNAME y
ELIDE_MAVEN_<NAME>_PASSWORD, donde <NAME> es el nombre del repositorio en mayúsculas con cada carácter que no sea
letra o dígito convertido en _ (internal → ELIDE_MAVEN_INTERNAL_USERNAME, my-repo → ELIDE_MAVEN_MY_REPO_…), y
si no, de las credentials del repositorio. Se rechazan dos nombres que corresponden a las mismas variables
(my-repo y my_repo). Los repositorios http:// sin cifrar que no sean localhost se rechazan sin
--allow-http-repositories.
Con signing definido, una publicación remota firma cada archivo con el programa gpg (<file>.asc); signing {}
firma con la clave predeterminada de gpg, y signing { gpg { keyName = "…" } } elige una. Una publicación local solo
firma con --sign, y --no-sign desactiva la firma. gpg-agent pide la frase de contraseña. Para CI, defina
ELIDE_GPG_PASSPHRASE y Elide la pasa a gpg mediante pinentry en modo loopback. Elide nunca lee la clave por sí
mismo.
Un repositorio CentralPortal publica en Maven Central a través del Central Publisher Portal. Cree un token de usuario
en el Portal y páselo como ELIDE_MAVEN_<NAME>_USERNAME y ELIDE_MAVEN_<NAME>_PASSWORD. Todos los proyectos de la
ejecución van en un único paquete firmado y con sumas de verificación, y en un único despliegue, que el Portal valida y
publica como una unidad. Elide espera a que el Portal lo haya validado y falla con los errores del Portal si no pasa la
validación. --no-wait termina justo después de la subida.
Propiedad de CentralPortal | Significado | Predeterminado |
|---|---|---|
publishingType | USER_MANAGED: usted publica el despliegue validado en el Portal. AUTOMATIC: se publica una vez validado. | USER_MANAGED |
url | Portal al que se sube. | https:/ |
Antes de compilar, Elide comprueba lo que exige Central e informa de todo lo que falta a la vez: name, description,
url, licenses, developers y scm.url de pom; un artefacto SourceJar y uno JavadocJar; la firma (por lo que
se rechaza --no-sign); y una versión que no sea -SNAPSHOT.
En un espacio de trabajo, los miembros heredan el bloque publishing de la raíz salvo artifactId y artifacts, y los
ajustes propios de un miembro prevalecen campo por campo. Los repositorios se heredan por nombre. Un proyecto que no
compila ningún JAR no publica nada de lo que hereda.
Para publicar solo algunos proyectos de un espacio de trabajo, nómbrelos (elide publish core util) en lugar de cambiar
sus bloques publishing, o pase --skip-existing para omitir toda versión que ya esté en el destino; consulte
elide publish.
Pruebas
import "elide:Testing.pkl" as Testing
testing { reports { Testing.xmlReport() } }| Propiedad | Significado |
|---|---|
testing.reports | Formatos de informe para todos los ejecutores, escritos en .; equivale a --reporter=junit. |
Cobertura
import "elide:Coverage.pkl" as Coverage
coverage {
enabled = true
scope = "tests"
jvm {
excludes { "org.example.generated.*" }
reports { Coverage.xmlReport(); Coverage.htmlReport() }
}
js { paths { "src" } }
}| Propiedad | Significado | Predeterminado |
|---|---|---|
coverage.enabled | Recoger cobertura sin --coverage. | false |
coverage.scope | Tareas que recogen: "tests", "runs" o "all". --coverage siempre cubre la tarea a la que se pasa. | "tests" |
coverage.jvm.reports | Formatos de informe de la JVM: Coverage.htmlReport(), xmlReport(), csvReport(), escritos en .. | ninguno |
coverage.jvm.excludes | Patrones de nombres de clase (*, ?) que no se instrumentan, como el código generado. | ninguno |
coverage.js.paths | Raíces de código fuente JavaScript y TypeScript sobre las que se informa, en formato LCOV en .. Si está vacío, se informa de todo el proyecto. | ninguno |
Consulte Pruebas › Cobertura.
Espacios de trabajo
workspace { members { "core"; "app" } }Cada miembro es un directorio con su propio elide.pkl; los miembros no pueden tener miembros.
elide init --template workspace crea una raíz con una biblioteca core y una app que depende de ella.
| Comportamiento | Regla |
|---|---|
| Alcance de compilación | Desde la raíz, elide build/elide test cubren todos los proyectos; desde un miembro, solo ese miembro. |
| Tareas entre proyectos | elide build core:compile-kotlin-main, o elide build core para sus tareas predeterminadas. |
| Estado compartido | Las dependencias resueltas y el estado de compilación viven en el .dev de la raíz; las salidas quedan en el .dev de cada proyecto. |
| Versiones fijadas | Un miembro puede omitir una versión de Maven y tomar la de la raíz; una versión en conflicto es un error. |
// 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 } } }| Referencia | Significado |
|---|---|
project("core") | El artefacto Jvm.Jar del proyecto y su classpath de compilación, compilado cuando hace falta. Las fuentes JVM por sí solas no cuentan. |
project("core"). | Elegir un JAR cuando el proyecto declara varios. |
project("core"). | Ver también las declaraciones internal de Kotlin de core, no las de sus dependencias. Solo en packages, modules, compileOnly, testPackages. |
new Jvm. | Desempaquetar el JAR de core dentro de este, compilándolo antes; no hace falta ninguna dependencia. |
module.project("core") | Úselo en el sitio, dentro del cuerpo de un objeto; un project(…) sin calificar no se resuelve ahí. |
new Artifacts. | Forma explícita; import "elide:Artifacts.. |
Una referencia a un proyecto sin JAR, o un friend() mal colocado, falla al configurar la compilación.