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

Плагін 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/.

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