Перейти до вмісту

Залежності

Оголошуйте залежності Maven, npm і PyPI в elide.pkl і встановлюйте пакети Maven і npm командою elide install: екосистеми, параметри та встановлені файли.

На цій сторінці

Оголосіть залежності в elide.pkl і встановіть їх командою elide install.

ЕкосистемаЯк увімкнутиЗвідки читається
Mavenза замовчуваннямelide.pkl або проєкт pom.xml, вибраний через -p
npm--ecosystems=npmelide.pkl і package.json
PyPI—dependencies.pypi приймається; elide install його не встановлює

Встановлення залежностей

elide install                         # Maven
elide install --ecosystems=npm        # npm
elide install --ecosystems=maven,npm  # both
elide install --workspace             # every ecosystem the project declares
0:30 / 0:30

Наявність package.json не вмикає npm; перелічіть усі екосистеми, потрібні в CI. Невідома або недоступна екосистема — це помилка використання.

Оголошення залежностей

amends "elide:project.pkl"

dependencies {
  maven {
    packages {
      "com.google.guava:guava:33.4.8-jre"
    }
  }
  npm {
    packages { "react@19.0.0" }
    devPackages { "typescript@5.6.2" }
  }
  pypi {
    packages { "requests>=2" }
    optionalPackages { ["dev"] { "pytest>=8" } }
  }
}

Для проєкту, де є лише pom.xml, виконайте elide install -p .; див. Залежності Maven.

Групи Maven

Запис — це group:artifact:version[:classifier], MavenPackageSpec, шлях до локального JAR або посилання project("name"). Учасники робочого простору можуть не вказувати версію й брати її з кореня (Робочі простори). Конфлікти розв’язуються за найближчою залежністю, як у Maven.

ГрупаЗастосовується до
packagesClasspath компіляції та виконання продакшн-наборів.
devPackagesЛише на етапі розробки.
modules--module-path для компіляції, запуску, тестів і нативних образів.
compileOnlyЛише classpath компіляції.
runtimeOnlyЛише classpath виконання.
processorsШлях процесорів анотацій; див. Залежності Maven.
testPackagesНабори тестів, на додачу до залежностей їхнього продакшн-набору.
kotlinPluginsПлагіни компілятора Kotlin; див. Компілятор Kotlin.
exclusionsВилучаються з розв’язання та з усіх classpath.
substitutionsЛокальні файли, що замінюють координату в усіх classpath; див. довідник.

Стартери Spring Boot:

dependencies {
  spring {
    version = "4.0.0"
    starter { "web"; "actuator" }
    testStarter { "test" }
  }
}

Кожна назва стає org.springframework.boot:spring-boot-starter-<name>:<version> у packages або testPackages. Інші артефакти Spring (spring-boot-devtools, org.springframework:*) вказуються в maven; обидва списки об’єднуються.

Репозиторії

dependencies {
  maven {
    repositories {
      ["company"] = "https://maven.example.com/releases"
      ["private"] {
        url = "https://packages.example.com/maven"
        credentials {
          username = read("env:MAVEN_USER")
          password = read("env:MAVEN_TOKEN")
        }
      }
    }
    localRepository = ".m2/repository"
  }
}
ВластивістьПризначення
repositories[name].urlURL репозиторію.
repositories[name].credentials.username, .passwordБазова автентифікація.
repositories[name].credentials.ntlmDomain, .ntlmWorkstationБудь-яка з них вмикає NTLM.
repositories[name].name, .descriptionВідображувана назва та опис.
enableDefaultRepositoriesПідключати Maven Central (за замовчуванням true).
localRepositoryЛокальний репозиторій Maven, у який виконується розв’язання.
  • Незашифрований http:// до будь-якої адреси поза 127.0.0.0/8 завершується помилкою Maven repository 'name' uses plain HTTP. elide build deps --allow-http-repositories дозволяє його.
  • read("env:…") потребує --allow-env; див. Прапорці збирання.
  • З enableDefaultRepositories артефакти Maven спершу завантажуються через проксі maven.pkg.st, потім із Maven Central. elide build deps --use-pkgst=false (або --no-use-pkgst) використовує лише Maven Central; глобальні прапорці --pkgst і --no-pkgst на це не впливають.

Параметри Maven

ПараметрДія
--slimНе завантажувати вихідні файли та Javadoc.
--with=sourcesДодатково завантажити вихідні файли; також працюють javadoc і docs. Невідомі значення завершуються з кодом 2.
--directКопіювати артефакти в проєкт замість створення посилань.
--freshЗнову завантажити всі залежності й оновити глобальний кеш.

elide build deps виконує те саме розв’язання як завдання і також приймає --offline, --allow-http-repositories і --use-pkgst.

Встановлені файли

ШляхВміст
.dev/dependencies/npm/node_modulesПакети npm; node_modules у корені проєкту посилається сюди.
aube-lock.yamllock-файл npm.
.dev/dependencies/m2Посилання в стандартний кеш Maven.
.dev/dependencies/m2/{compile,runtime,test,processors}.classpathРозв’язані classpath; див. elide classpath.

У робочому просторі посилання містяться в .dev/dependencies/ кореня; файли classpath залишаються в кожного проєкту. Спільного lock-файлу для всіх екосистем немає; див. Стан збирання.

Запити до коду залежностей

Експериментальний індекс коду залежностей записує типи, члени та посилання з розв’язаних JAR Maven. Побудуйте його командою elide index build --layers=l1,l2,l3, а потім використовуйте resolve, щоб дізнатися, який артефакт визначає клас, get, щоб переглянути тип або член, і references, щоб перейти за його посиланнями в коді. used-by знаходить відповідні скомпільовані локальні вихідні файли.

OpenRewrite використовує той самий індекс для перетворень вихідного коду на Java. Додайте модулі рецептів у devPackages: це інструменти розробки, окремі від залежностей застосунку.

Неявні бібліотеки JVM

  • Корені лише на Java не отримують неявних бібліотек Kotlin, середовища виконання Metro та API анотацій Elide, навіть із блоком kotlin.
  • Корені на Kotlin отримують бібліотеки, які вмикають їхні kotlin.features.
  • Корені на Kotlin також отримують середовище виконання atomicfu, якщо не задано kotlin.features.atomicfu = false.
  • Набори тестів отримують вбудований JUnit, якщо не задано jvm.features.testing = false; тоді для тестів JVM elide test потрібен ваш власний junit-platform-console.
  • dev.elide:elide-api і elide-insight приймають latest як версію й розв’язуються у вбудований артефакт.

Повний список із версіями: API для JVM. Щоб використовувати анотації Elide з Java:

dependencies {
  maven {
    compileOnly { "dev.elide:elide-api:1.0.0" }
  }
}

Особливості npm: Встановлювач npm.

Чи була ця сторінка корисною?