elide.pkl — маніфест проєкту: у ньому оголошуються збирання, залежності, тести й артефакти.
Кожен файл починається так:
amends "elide:project.pkl"elide: вказує на схему, вбудовану в запущений Elide, для цього та всіх інших модулів (elide:Jvm.pkl).
Щоб закріпити версію схеми, розширюйте опубліковану URL-адресу:
pkl.elide.dev/1.6.0/project.pkl.
Версія в розробці відстежує main до стабільного випуску. Випущені версії схеми незмінні.
Патч-випуски в межах лінії MAJOR.MINOR лише додають властивості. Мінорний випуск може вилучати, перейменовувати
властивості, змінювати їхній тип і значення за замовчуванням.
| Закріплена версія | Результат |
|---|---|
| Старіша за запущений Elide | Використовується ця версія; властивість, вилучена пізніше, спричиняє помилку із зазначенням версії. |
| Новіша за запущений Elide | Дозволено; властивість, якої немає в запущеному Elide, спричиняє помилку із зазначенням потрібного оновлення. |
| Інша мажорна версія | Відхиляється. |
elide project export виводить обчислений маніфест у JSON; elide build --inspect перелічує його завдання.
Метадані проєкту
| Властивість | Призначення |
|---|---|
name, version, description | Ідентифікація проєкту; version також входить в імена архівів застосунків. |
entrypoint | Файл(и), які elide run використовує, якщо нічого не передано. |
scripts | Іменовані команди оболонки для elide run NAME. |
sources | Набори вихідних файлів; див. Вихідні файли. |
dependencies | Пакети Maven, npm і PyPI; див. Залежності. |
jvm, kotlin, javascript | Налаштування мов і компіляторів. |
nativeImage | Приймається, але не застосовується; задавайте options кожного артефакту. |
engine | Контексти для обслуговування запитів; див. Контексти рушія. |
toolchain | Допустимі версії Elide; див. Інструментарій. |
dev | Відомості про вихідний код, MCP, сервер розробки; див. Розробка. |
web | Налаштування вебресурсів; див. Веб. |
artifacts | Результати збирання; див. Артефакти. |
testing | Звіти про тести; див. Тестування. |
coverage | Покриття; див. Тестування › Покриття. |
workspace | Проєкти-учасники; див. Робочі простори. |
build.flags містить значення -f/--flag; див. Прапорці збирання.
Контексти рушія
engine {
topology = "prespawn"
contexts { spawn = "auto"; reserve = 2; min = 1; max = 16 }
}| Властивість | Опис | За замовчуванням |
|---|---|---|
topology | "prespawn", єдине значення. | "prespawn" |
contexts.spawn | Кількість контекстів: додатне ціле число або "auto" (фізичні ядра мінус reserve, у межах обмежень). | 1 |
contexts.reserve | Ядра, що віднімаються для "auto"; до процесорів не прив’язує. | 2 |
contexts.min, contexts.max | Межі для будь-якої кількості. | 1, немає |
maxContexts | Застаріла фіксована кількість; не можна поєднувати з contexts. | — |
Кожен контекст один раз обчислює вхідний модуль із власними глобальними об’єктами, перш ніж сервер стане готовим.
--contexts=N|auto у run, serve і dev перевизначає spawn. Більше одного контексту — лише в Linux.
Блок 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" }
}Телеметрію вимкнено, доки не задано місце призначення: тут, у змінних OTEL_*/ELIDE_OTEL_* або в прапорцях
--otel-*. Вони перевизначають цей блок, причому прапорці мають найвищий пріоритет; див.
Змінні оточення середовища виконання.
elide run, elide serve, elide test, elide build і elide install у проєкті читають цей блок;
elide run file.js усередині проєкту читає його, якщо elide.pkl містить слово opentelemetry.
Див. Конфігурація. Облікові дані тут не записуються: вкажіть змінну оточення,
у якій вони зберігаються.
| Властивість | Опис | За замовчуванням |
|---|---|---|
enabled | false вимикає телеметрію незалежно від оточення. | — |
service.name, .version, .namespace, .environment | Атрибути ресурсу service.* і deployment.. | unknown_service:elide |
resource | Додаткові атрибути ресурсу. | — |
destinations | Іменовані місця призначення телеметрії. | немає |
traces.enabled, .sampler, .ratio, .propagators | Спани застосунку. Семплери — як у OTEL_TRACES_SAMPLER. | увімк., parentbased_always_on, tracecontext + baggage |
metrics.enabled, .interval, .temporality | Метрики застосунку. | увімк., 60.s, cumulative |
logs.enabled, .level, .console | Журнали застосунку; console експортує вивід console.*, Python logging тощо. | увімк., info, увімк. |
profiles.enabled, .frequency | Профілі CPU гостьового коду (експериментально). | вимк., 100 на секунду |
runtime.traces, .metrics, .logs | Власні спани й метрики Elide та поріг його журналів. | увімк., увімк., warn |
propagation.baggage | W3C baggage у HTTP-сервері та клієнтах Elide; див. Baggage. | вимк. |
shutdownTimeout | Кінцевий термін останнього експорту під час завершення. | 5.s |
Кожне місце призначення:
| Властивість | Опис | За замовчуванням |
|---|---|---|
provider | otlp, sentry, datadog, posthog, honeycomb або grafana. | otlp |
endpoint | Базова URL-адреса; замінює хост провайдера. Для HTTP додається /v1/<signal>. | http://localhost:4318 (4317 для gRPC) |
protocol | grpc, http/protobuf або http/json. | http/protobuf |
headers, headerEnv | Заголовки в явному вигляді та заголовки із зазначених змінних. | — |
credential | Змінна з ключем провайдера: DD_API_KEY, POSTHOG_PROJECT_TOKEN, HONEYCOMB_API_KEY, GRAFANA_. | як зазначено |
dsn | Змінна з DSN Sentry. | SENTRY_DSN |
site | Сайт Datadog: us1, us3, us5, eu, ap1, ap2, gov або домен. | DD_SITE, потім us1 |
region | us/eu (PostHog, Honeycomb) або зона Grafana Cloud, наприклад prod-us-east-0. | us |
signals | traces, metrics, logs, profiles. | те, що приймає провайдер |
compression, timeout | Стиснення й кінцевий термін запиту. | gzip, 10.s |
perSignal | endpoint, protocol, headers, headerEnv, compression, timeout для окремих сигналів. | — |
| Провайдер | Сигнали за замовчуванням | Також приймаються | Протоколи |
|---|---|---|---|
otlp | трасування, метрики, журнали | профілі | усі |
sentry | трасування, журнали | — | http/protobuf |
datadog | метрики (delta), журнали | трасування (попередня версія agentless intake) | http/protobuf; http/json, крім журналів |
posthog | журнали | трасування | http/protobuf |
honeycomb | трасування, метрики, журнали | — | усі |
grafana | трасування, метрики, журнали | — | http/protobuf |
Помилки надсилаються як записи журналу exception і події спанів, а також як метрика elide.errors, тож їх отримує
кожен провайдер, що приймає журнали, трасування або метрики. Про використання див.
Огляд OpenTelemetry, про кожного провайдера — Провайдери. Запит у
провайдера сигналу чи протоколу, якого він не приймає, — помилка.
Baggage
HTTP-сервер і клієнти Elide передають traceparent і tracestate. W3C baggage вони передають, лише якщо ви
ввімкнете відповідний напрямок, бо baggage від клієнта — це неперевірені вхідні дані:
opentelemetry {
propagation {
baggage {
inbound = true
outbound = true
allow { "tenant"; "region" }
spanAttributes { "tenant" }
}
}
}| Властивість | Опис | За замовчуванням |
|---|---|---|
inbound | Заголовки baggage запитів, що обслуговуються, стають baggage обробника. | false |
outbound | Вихідні запити fetch і HTTP-клієнта несуть поточний baggage, якщо запит сам не задає baggage. | false |
allow | Ключі, дозволені в обох напрямках. | усі ключі |
spanAttributes | Вхідні ключі, що записуються в серверний спан як baggage.<key>; кожен має бути в allow. | немає |
Заголовок понад 8192 байти або 180 елементів чи з будь-яким некоректним елементом відкидається повністю. Baggage від
клієнта потрапляє у вихідні запити, лише коли ввімкнено обидва напрямки. Код застосунку завжди може читати, задавати
й надсилати baggage через API OpenTelemetry; OTEL_PROPAGATORS впливає лише на цей API.
Вихідні файли
sources {
["main"] = "lib/**/*.kt"
["integrationTest"] {
type = "test"
dependsOn { "main" }
paths { "it/**/*.kt" }
resources { "it/fixtures"; new { from = "it/config"; into = "META-INF" } }
}
}| Властивість | Опис | Якщо порожньо або не задано |
|---|---|---|
type | "source", "test", "example" або "other". | Визначається за назвою. |
paths | Glob-шаблони або каталоги. | src/<name>/<language>. |
resources | Шляхи або корені new { from; into }. | src/<name>/resources. |
dependsOn | Набори вихідних файлів, видимі цьому набору. | Не задано: набори тестів і прикладів бачать main. Порожньо: нічого. |
Див. Набори вихідних файлів.
Залежності
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" } }
}| Блок | Властивості |
|---|---|
maven | packages, devPackages, modules, compileOnly, runtimeOnly, processors, testPackages, kotlinPlugins, exclusions, substitutions, repositories, enableDefaultRepositories, localRepository |
npm | packages, devPackages |
pypi | packages, optionalPackages (іменовані групи); elide install їх не встановлює. |
spring | version, starter, testStarter; розгортається в maven. |
| Значення | Форма |
|---|---|
| Запис Maven | "group:artifact:version[:classifier]", MavenPackageSpec (group, name, version, classifier або coordinate), шлях до локального JAR або посилання на проєкт. |
| Репозиторій | URL-адреса або опис з url, name, description, credentials (username, password, ntlmDomain, ntlmWorkstation). |
Ключ substitutions | group:artifact (будь-яка версія) або group:artifact:version; значення — шлях до файлу. |
Підстановка зберігає транзитивні залежності координати й ставить файл замість неї в кожен classpath. Шляхи розв’язуються відносно маніфесту, що їх оголошує; учасники успадковують підстановки кореня. Завдання, що генерує файл, має виконуватися раніше. Групи й репозиторії: Залежності.
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" } } }
}| Властивість | Опис | За замовчуванням |
|---|---|---|
main | Клас точки входу для elide run, JAR, застосунків і нативних образів. | — |
target | Цільовий байт-код: 8 … 29, 1.8, "latest", "stable" або "auto". | "auto" (21) |
javaHome | Каталог Java для зовнішньої компіляції та окремих процесів JVM. | власний Elide |
preferBali | Зовнішні запуски JVM викликають bali з PATH замість java, а без нього виводять попередження й використовують java. | false |
features.testing | Залежності JUnit у наборах тестів. | true |
features.automodules | Автоматичні модулі для JAR без дескриптора. | true |
features.graalvm | API SDK org.graalvm у classpath компіляції. | false |
java.source, java.release | Рівні вихідного коду та --release; див. Компілятор Java. | "auto" |
java.compiler.mode | "embedded" або "external". | "embedded" |
java.compiler.flags | Додаткові прапорці javac. | немає |
java.sourceSets | release і flags для окремих наборів вихідних файлів; див. Компілятор Java. | немає |
flags | Прапорці JVM для elide run, тестової JVM і стартових скриптів. | немає |
defs | Системні властивості (-D), застосовуються скрізь, де й flags. | немає |
debug | Компілювати з -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" } }
}| Властивість | Опис |
|---|---|
apiLevel, languageLevel | "auto", "latest", "stable" або "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. або new Kotlin.. |
plugins | Параметри для кожного id плагіна компілятора, передаються як -P plugin:<id>:<key>=. |
Значення за замовчуванням: Компілятор Kotlin.
JavaScript
| Властивість | Опис | За замовчуванням |
|---|---|---|
javascript.ecma | Оголошена редакція ECMAScript: рік 2015 … 2025, "stable" або "latest". Її показує elide project info; вона не змінює ні синтаксис, що виконується, ні спосіб збирання коду (Мова JavaScript). | "stable" |
Інструментарій
toolchain { engines { ["elide"] = ">=1.6.0" } }| Властивість | Опис |
|---|---|
engines["elide"] | Версія чи діапазон semver або new { version = "…" }; запущений Elide поза цим діапазоном не проходить перевірку. |
engines[<other>] | Приймається, але не перевіряється. |
Розробка
dev {
source { platform = "github"; project = "example/app" }
mcp {
registerElide = true
advice = true
resources { new { path = "docs/ARCHITECTURE.md"; name = "architecture" } }
}
}| Властивість | Опис | За замовчуванням |
|---|---|---|
source.platform, source.project, source.subpath | Хостинг вихідного коду: "github", "gitlab", "bitbucket", "git" або інша назва. | — |
mcp.registerElide | Зареєструвати Elide як інструмент MCP. | true |
mcp.advice | Надавати elide project advice як ресурс MCP. | true |
mcp.resources | Додаткові ресурси MCP: path, name, description, mimeType (визначається, якщо не вказано). | немає |
server.host, server.port | Не використовуються в elide dev, який приймає --host/--port (за замовчуванням 127.0.0.1:3000). | "0.0.0.0", 8080 |
Веб
| Властивість | Опис | За замовчуванням |
|---|---|---|
web.css.minify | Мініфікувати зібраний CSS. | true |
web.css.targets | Цільові браузери: new { browser = "chrome"; version = "120" }. | немає |
web.minifyHtml | Мініфікувати відрендерений HTML. | true |
web.browsers | Цільові браузери для всіх результатів; для CSS його перевизначає css.targets. | немає |
Див. Веб-інструментарій.
Артефакти
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
}
}Ключ задає назву завдання збирання. Результати потрапляють у .dev/artifacts/<kind>/.
| Тип | Модуль | Поля |
|---|---|---|
Jar, SourceJar, JavadocJar, JvmApplication | elide:Jvm.pkl | Збирання JAR |
NativeImage | elide:NativeImage.pkl | Native Image |
WebImage | elide:NativeImage.pkl | WebImage |
ContainerImage | elide:Container.pkl | JVM-контейнери |
StaticSite | elide:Web.pkl | Статичні сайти |
| Спільне поле | Опис |
|---|---|
dependsOn | Назви артефактів, які треба зібрати раніше. |
name (JAR) | І "app", і "app.jar" дають app.jar; SourceJar дає app-sources.jar. |
WebImage
WebImage приймає поля NativeImage from, name, entrypoint,
moduleName, dependsOn і options, не має type і додає:
| Властивість | Значення | За замовчуванням |
|---|---|---|
backend | "wasm-gc" (GC хоста) або "wasm-lm" (лінійна пам’ять). | "wasm-gc" |
runtime | "generic", "browser" або "node". | "generic" |
autoRun | Запускати програму, коли завантажувач завантажено. | true |
sourceMap | Створювати source map JavaScript. | false |
entrypoint (або jvm.main) обов’язковий навіть за autoRun = false. Не передавайте сирі прапорці для цих чотирьох
налаштувань. Посібник: WebImage; артефакти на прапорцях:
міграція.
Публікація
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 збирає вибрані JAR і встановлює їх разом із POM у локальний репозиторій Maven. Версія береться з
version проєкту. Публікації потрібні groupId, version і рівно один Jar. SourceJar публікується зі своїм
classifier (за замовчуванням sources), JavadocJar — з javadoc. Відносний localRepository розв’язується
відносно маніфесту, у якому його оголошено.
| Маніфест | Опублікований POM |
|---|---|
packages, modules | Залежності compile |
runtimeOnly | Залежності runtime |
compileOnly, devPackages, processors, kotlinPlugins, testPackages | Не включаються |
exclusions без версії | <exclusion> у кожній залежності |
| Сусідній проєкт | Власні координати публікації цього проєкту |
Сусідній проєкт у Jar.from | Його packages, modules і runtimeOnly, якщо їх ще не перелічено |
| Шлях до локального JAR | Помилка: споживачі не можуть його розв’язати |
POM також перелічує як залежності compile бібліотеки, які Elide без оголошення додає в classpath проєкту Kotlin, бо
вони потрібні споживачам під час виконання: kotlin-stdlib і kotlin-reflect версії Kotlin проєкту, а також бібліотеки
середовища виконання, які вмикає kotlin.features (kotlinx-coroutines-core, kotlinx-serialization, середовище
виконання Metro). Вони потрапляють в опублікований POM, хоча elide.pkl їх не називає. Вимкніть таку бібліотеку там,
звідки вона береться (kotlin.features або kotlin.compilerOptions.noStdlib), або оголосіть її самостійно, щоб
закріпити іншу версію. jvm.features.graalvm додає GraalVM SDK з областю runtime.
elide publish --to <name> натомість публікує в репозиторій з repositories, з контрольними сумами .md5, .sha1,
.sha256 і .sha512 для кожного файлу. Облікові дані беруться з ELIDE_MAVEN_<NAME>_USERNAME і
ELIDE_MAVEN_<NAME>_PASSWORD, де <NAME> — назва репозиторію у верхньому регістрі, у якій кожен символ, крім літер і
цифр, замінено на _ (internal → ELIDE_MAVEN_INTERNAL_USERNAME, my-repo → ELIDE_MAVEN_MY_REPO_…), а якщо їх
немає — з credentials репозиторію. Дві назви, що дають ті самі змінні (my-repo і my_repo), відхиляються.
Репозиторії із простим http://, крім localhost, відхиляються без --allow-http-repositories.
Якщо задано signing, віддалена публікація підписує кожен файл програмою gpg (<file>.asc); signing {} підписує
ключем gpg за замовчуванням, а signing { gpg { keyName = "…" } } вибирає ключ. Локальна публікація підписує лише з
--sign, а --no-sign вимикає підпис. Парольну фразу запитує gpg-agent. Для CI задайте ELIDE_GPG_PASSPHRASE, і
Elide передасть її gpg через loopback pinentry. Сам ключ Elide ніколи не читає.
Репозиторій CentralPortal публікує в Maven Central через Central Publisher Portal. Створіть у Portal токен
користувача й передайте його як ELIDE_MAVEN_<NAME>_USERNAME і ELIDE_MAVEN_<NAME>_PASSWORD. Усі проєкти запуску
потрапляють в один підписаний пакет із контрольними сумами та одне розгортання, яке Portal перевіряє й випускає
цілком. Elide чекає, доки Portal його перевірить, і завершується з помилками Portal, якщо перевірку не пройдено.
--no-wait натомість повертає керування одразу після завантаження.
Властивість CentralPortal | Опис | За замовчуванням |
|---|---|---|
publishingType | USER_MANAGED: перевірене розгортання ви випускаєте в Portal самі. AUTOMATIC: випуск одразу після перевірки. | USER_MANAGED |
url | Portal, у який виконується завантаження. | https:/ |
Перед збиранням Elide перевіряє вимоги Central і одразу повідомляє про все, чого бракує: у pom — name,
description, url, licenses, developers і scm.url; артефакти SourceJar і JavadocJar; підпис (тому
--no-sign відхиляється); версія, що не є -SNAPSHOT.
У робочому просторі учасники успадковують блок publishing кореня, крім artifactId і artifacts, а власні
налаштування учасника мають пріоритет для кожного поля. Репозиторії успадковуються за назвою. Проєкт, що не збирає
JAR, нічого успадкованого не публікує.
Щоб опублікувати лише частину проєктів робочого простору, перелічіть їх (elide publish core util), а не змінюйте
їхні блоки publishing, або передайте --skip-existing, щоб пропустити всі версії, які вже є в цільовому
репозиторії; див. elide publish.
Тестування
import "elide:Testing.pkl" as Testing
testing { reports { Testing.xmlReport() } }| Властивість | Опис |
|---|---|
testing.reports | Формати звітів для всіх засобів запуску тестів, записуються в .; те саме, що --reporter=junit. |
Покриття
import "elide:Coverage.pkl" as Coverage
coverage {
enabled = true
scope = "tests"
jvm {
excludes { "org.example.generated.*" }
reports { Coverage.xmlReport(); Coverage.htmlReport() }
}
js { paths { "src" } }
}| Властивість | Опис | За замовчуванням |
|---|---|---|
coverage.enabled | Збирати покриття без --coverage. | false |
coverage.scope | Завдання, що збирають покриття: "tests", "runs" або "all". --coverage завжди покриває завдання, якому його передано. | "tests" |
coverage.jvm.reports | Формати звітів JVM: Coverage.htmlReport(), xmlReport(), csvReport(), записуються в .. | немає |
coverage.jvm.excludes | Шаблони імен класів (*, ?), які не інструментуються, наприклад згенерований код. | немає |
coverage.js.paths | Корені вихідних файлів JavaScript і TypeScript для звіту у форматі LCOV у .. Порожнє значення — звіт за всім проєктом. | немає |
Див. Тестування › Покриття.
Робочі простори
workspace { members { "core"; "app" } }Кожен учасник — це каталог із власним elide.pkl; учасники не можуть мати своїх учасників.
elide init --template workspace створює корінь із бібліотекою core і застосунком app, що від неї залежить.
| Поведінка | Правило |
|---|---|
| Область збирання | З кореня elide build/elide test охоплюють усі проєкти; з учасника — лише його. |
| Завдання інших проєктів | elide build core:compile-kotlin-main або elide build core для його завдань за замовчуванням. |
| Спільний стан | Розв’язані залежності й стан збирання зберігаються в .dev кореня; результати лишаються в .dev кожного проєкту. |
| Закріплення версій | Учасник може не вказувати версію Maven і брати її з кореня; конфліктна версія — помилка. |
// 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 } } }| Посилання | Опис |
|---|---|
project("core") | Артефакт Jvm.Jar проєкту та його classpath компіляції; збирається за потреби. Самі лише вихідні файли JVM не враховуються. |
project("core"). | Вибрати один JAR, якщо проєкт оголошує кілька. |
project("core"). | Додатково бачити оголошення Kotlin internal з core, але не з його залежностей. Лише в packages, modules, compileOnly, testPackages. |
new Jvm. | Розпакувати JAR core у цей JAR, попередньо зібравши його; залежність не потрібна. |
module.project("core") | Використовуйте на місці, усередині тіла об’єкта; простий project(…) там не розв’язується. |
new Artifacts. | Явна форма; import "elide:Artifacts.. |
Посилання на проєкт без JAR або friend() не на своєму місці спричиняє помилку під час конфігурації збирання.