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