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

Плагин Gradle

Компилируйте Java в существующей сборке Gradle с помощью elide javac: плагины dev.elide для settings и проектов, выбор среды выполнения, постоянные компиляторы, задачи форматирования и экспорт зависимостей.

На этой странице

Плагины dev.elide.settings и dev.elide заставляют задачи JavaCompile в Gradle запускать elide javac и добавляют задачи форматирования и экспорта зависимостей. Разрешение зависимостей, тесты и упаковка остаются за Gradle.

Требования

Версия
Gradle7.6.4 или новее
JDK, на котором работает Gradle17 или новее
Плагины1.2.0, из Maven Central
Elide1.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; затем управляемую среду выполнения
PATHelide из PATH; завершается ошибкой, если он старше version
MANAGEDОдин раз скачивает version в <GRADLE_USER_HOME>/caches/dev.elide/runtimes/, проверяет SHA-256 и затем использует без сети
elide {
    runtime {
        mode = ElideRuntimeMode.PATH
        executable = layout.projectDirectory.file("tools/elide")
    }
}

Управляемые загрузки доступны для Linux x86_64 и arm64, macOS arm64 и Windows x86_64. Применение плагина ничего не скачивает и не запускает; среда выполнения готовится, когда она нужна задаче.

Настройка

Блок elide { } проекта:

СвойствоПо умолчаниюДействие
compilertrueКомпилировать задачи JavaCompile через elide javac
persistentCompilerfalseДержать до четырёх прогретых воркеров elide javac до конца сборки
dependencyModeLEGACYGRADLE: разрешением занимается Gradle; install должен оставаться выключенным
installfalseЗапускать elide install по elide.pkl перед компиляцией
maventrueВместе с install добавляет .dev/dependencies/m2 как репозиторий Maven
manifestelide.pklМанифест, который читает install

Свойства Gradle переопределяют блок на один запуск, в обе стороны:

СвойствоДействие
elide.builder.javac.enable=falseКомпилировать обычным javac
elide.builder.maven.install.enable=trueПринудительно включить 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/elide/dependencies/

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/.

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