Перейти к содержимому

Зависимости

Объявляйте зависимости 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.

Была ли эта страница полезной?