Плагины dev.elide.settings и dev.elide заставляют задачи JavaCompile в Gradle запускать elide javac и
добавляют задачи форматирования и экспорта зависимостей. Разрешение зависимостей, тесты и упаковка остаются за Gradle.
Требования
| Версия | |
|---|---|
| Gradle | 7.6.4 или новее |
| JDK, на котором работает Gradle | 17 или новее |
| Плагины | 1.2.0, из Maven Central |
| Elide | 1.6 |
Установка
settings.gradle.kts добавляет Maven Central в репозитории плагинов и выбирает среду выполнения Elide для всей
сборки:
import dev.elide.gradle.ElideRuntimeMode
pluginManagement {
repositories {
mavenCentral()
gradlePluginPortal()
}
}
plugins {
id("dev.elide.settings") version "1.2.0"
}
elide {
runtime {
mode = ElideRuntimeMode.MANAGED
version = "1.6.0"
}
}Каждый проект, который должен компилироваться с Elide, применяет dev.elide без версии:
// build.gradle.kts
plugins {
id("dev.elide")
java
}
elide {
compiler = true
}В Gradle 7.6 настраивайте расширение settings через
configure<dev.elide.gradle.ElideSettingsExtension> { runtime { … } }.
Выбор среды выполнения
mode | Использует |
|---|---|
AUTO (по умолчанию) | runtime.executable, если задан; затем elide из PATH, если он сообщает версию не ниже version; затем управляемую среду выполнения |
PATH | elide из PATH; завершается ошибкой, если он старше version |
MANAGED | Один раз скачивает version в <GRADLE_, проверяет SHA-256 и затем использует без сети |
elide {
runtime {
mode = ElideRuntimeMode.PATH
executable = layout.projectDirectory.file("tools/elide")
}
}Управляемые загрузки доступны для Linux x86_64 и arm64, macOS arm64 и Windows x86_64. Применение плагина ничего не скачивает и не запускает; среда выполнения готовится, когда она нужна задаче.
Настройка
Блок elide { } проекта:
| Свойство | По умолчанию | Действие |
|---|---|---|
compiler | true | Компилировать задачи JavaCompile через elide javac |
persistentCompiler | false | Держать до четырёх прогретых воркеров elide javac до конца сборки |
dependencyMode | LEGACY | GRADLE: разрешением занимается Gradle; install должен оставаться выключенным |
install | false | Запускать elide install по elide.pkl перед компиляцией |
maven | true | Вместе с install добавляет .dev/dependencies/m2 как репозиторий Maven |
manifest | elide.pkl | Манифест, который читает install |
Свойства Gradle переопределяют блок на один запуск, в обе стороны:
| Свойство | Действие |
|---|---|
elide. | Компилировать обычным javac |
elide. | Принудительно включить elide install |
./gradlew build -Pelide.builder.javac.enable=falseЗадачи
| Задача | Что делает |
|---|---|
prepareElideRuntime | Скачивает и проверяет управляемую среду выполнения |
elideInstall | Запускает elide install; пропускается, если не задано install = true |
elideCheckFormat | Завершается ошибкой, если файлы .java, .kt или .kts в src/ нужно отформатировать; ничего не меняет |
elideFormat | Форматирует их на месте |
elideExportDependencies | Записывает разрешённые координаты и SHA-256 для каждого набора исходников в build/ |
compileJava и compileTestJava сохраняют свои типы задач, поэтому инкрементальная компиляция и кеш сборки работают
как обычно.
Пример
settings.gradle.kts
build.gradle.kts
src/main/java/com/example/HelloWorld.java
src/test/java/com/example/HelloWorldTest.java// build.gradle.kts
plugins {
id("dev.elide")
java
application
}
application {
mainClass = "com.example.HelloWorld"
}
repositories {
mavenCentral()
}
elide {
compiler = true
}
dependencies {
implementation("com.google.guava:guava:33.4.8-jre")
testImplementation("org.junit.jupiter:junit-jupiter:5.13.4")
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
}
tasks.test {
useJUnitPlatform()
}С settings.gradle.kts из раздела Установка:
./gradlew clean build run> Task :prepareElideRuntime UP-TO-DATE
> Task :elideInstall SKIPPED
> Task :clean
> Task :compileJava
> Task :jar
> Task :run
Hello, World!
> Task :compileTestJava
> Task :test
> Task :build
BUILD SUCCESSFUL in 5s
Configuration cache entry stored.Первый запуск скачивает Elide в prepareElideRuntime; последующие используют его повторно.
OpenRewrite и запросы к зависимостям
Для проектов с elide.pkl см. OpenRewrite и
Индекс кода зависимостей. Плагин Gradle не добавляет задач для рефакторинга или индекса
кода; elideExportDependencies экспортирует координаты и контрольные суммы, но его вывод не служит входными данными
для elide index. Прежде чем использовать эти команды рядом с Gradle, прочитайте о
границе настройки проекта.
Ограничения
- Через Elide проходит только компиляция Java. Kotlin (
compileKotlin) использует компилятор плагина Kotlin для Gradle. persistentCompilerне поддерживаетforkOptions.jvmArgs.MANAGEDнедоступен на macOS с процессорами Intel; используйте тамPATH.elideFormatобрабатывает только исходники вsrc/.