تجعل الإضافتان 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، اضبط امتداد الإعدادات باستخدام 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/.