انتقل إلى المحتوى

إضافة Gradle

صرّف Java في بناء Gradle قائم باستخدام elide javac: إضافتا dev.elide للإعدادات وللمشروع، واختيار بيئة التشغيل، والمُصرّفات الدائمة، ومهام التنسيق، وتصدير التبعيات.

في هذه الصفحة

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

هل كانت هذه الصفحة مفيدة؟