إضافة ⁦Elide⁩ لـ ⁦Gradle⁩

يمكنك استخدام ⁦Elide⁩ كأداة بناء وتبعيات داخل ⁦Gradle⁩ عبر إضافة.

يبني ⁦Elide⁩ أداة ⁦javac⁩ كصورة أصلية ويُضمِّنها داخل ملف ⁦Elide⁩ الثنائي. تُغيِّر هذه الإضافة بناء ⁦Gradle⁩ الخاص بك لاستخدام مرافق سلسلة أدوات ⁦Elide⁩ بدلاً من المرافق المدمجة في ⁦Gradle⁩.

بالإضافة إلى ذلك، يمكن تكوين الإضافة ليقوم ⁦Elide⁩ بحل التبعيات وتحميلها.

يمكن أن تكون النتيجة تحسيناً كبيراً في الأداء لجلب التبعيات وترجمة الشيفرة.

قبل أن تبدأ

ستحتاج إلى نسخة مثبتة من ⁦Elide⁩. اتبع دليل التثبيت للحصول على نسخة من ⁦Elide⁩.

التثبيت

1. أنشئ وسيط ⁦javac⁩ في مجلد ⁦JAVA_HOME⁩ الخاص بك:

$JAVA_HOME/bin/elide-javac
bash
#!/usr/bin/env bash
 exec elide javac -- "${@}"

2. اجعل الوسيط قابلاً للتنفيذ:

chmod +x $JAVA_HOME/bin/elide-javac

3. قم بإعداد الإضافة في مشروع ⁦Gradle⁩ الخاص بك:

gradle.properties
kt
elidePluginVersion=latest
settings.gradle.kts
kt
// Use `latest` for the latest version, or any other tag, branch, or commit SHA on this project.
val elidePluginVersion: String by settings
apply(from = "https://gradle.elide.dev/$elidePluginVersion/elide.gradle.kts")
build.gradle.kts
kt
plugins {
  // The `elideRuntime` catalog is added for you. Add the plugin like this:
  alias(elideRuntime.plugins.elide)
}

// Settings here apply on a per-project basis. See below for available settings; all properties
// are optional, and you don't need to include this block at all if you are fine with defaults.
elide {
  // Use Elide's Maven resolver and downloader instead of Gradle's. Defaults to `true` when an
  // `elide.pkl` file is present in the project root.
  enableInstall = true

  // Use Elide to compile Java instead of the stock Compiler API facilities used by Gradle.
  // Defaults to `true` if the plugin is active in the project at all.
  enableJavaCompiler = true

  // Enable Elide project awareness for Gradle. For example, build scripts can show up as runnable
  // exec tasks within the Gradle build.
  enableProjectIntegration = true

  // Set the path to the project manifest, expressed in Pkl format. Elide project manifests can
  // specify dependencies, build scripts, and other project metadata. Defaults to `elide.pkl` and
  // automatically finds any present `elide.pkl` in the active project.
  manifest = layout.projectDirectory.file("elide.pkl")
}

الاستخدام

الترجمة باستخدام ⁦Elide⁩ + ⁦Gradle⁩

يعمل ⁦Elide⁩ كبديل مباشر كامل لـ ⁦javac⁩ و ⁦kotlinc⁩.

لتفعيل ترجمة ⁦Elide⁩، اضبط ⁦enableJavaCompiler = true⁩ في ⁦build.gradle.kts⁩.

يتم تكوين مهام ⁦JavaCompile⁩ في ⁦Gradle⁩ لاستخدام ⁦Elide⁩ من خلال ⁦isFork = true⁩ و ⁦forkOptions.executable⁩. تشير هذه إلى وسيط في مجلد ⁦JAVA_HOME⁩ يستدعي ⁦elide javac -- ...⁩ بدلاً من ⁦javac ...⁩.

نتيجة لذلك، يتم تخطي إحماء ⁦JIT⁩ بالكامل عند ترجمة ⁦Java⁩، مما يسمح بأداء أفضل للمترجم مقارنة بـ ⁦javac⁩ القياسي.

استخدام ⁦Elide⁩ لحل التبعيات

يحل ⁦Elide⁩ ويجلب تبعيات ⁦Maven⁩ بدلالات مطابقة لمحلل ⁦Maven⁩ نفسه، ولكن مع خطوة حل محسّنة من خلال استخدام ملف قفل مُسجَّل.

لتفعيل حل تبعيات ⁦Elide⁩، اضبط ⁦enableInstall = true⁩ في ⁦build.gradle.kts⁩.

عند التفعيل للاستخدام مع ⁦Gradle⁩، يتم إجراء عدة تغييرات على بنائك:

  • يتم إضافة استدعاء ⁦elide install⁩ أثناء مرحلة التكوين.
  • يتم تكوين ⁦Gradle⁩ لمستودع ⁦Maven⁩ محلي في ⁦.dev/dependencies/m2⁩، وهو المكان الذي يضع فيه ⁦Elide⁩ ملفات ⁦JAR⁩ المحلولة.
  • وبالتالي، عندما يحل ⁦Gradle⁩ التبعيات، تكون موجودة بالفعل على القرص وجاهزة للاستخدام في مسار الفئات.
  • في هذا الوضع، يتم تنزيل التبعيات مرة واحدة ويمكن استخدامها بعد ذلك مع كل من ⁦Elide⁩ و ⁦Gradle⁩.
يتطلب جلب التبعيات باستخدام ⁦Elide⁩ حالياً بيان ⁦elide.pkl⁩ يسرد تبعيات ⁦Maven⁩ الخاصة بك. سيتغير هذا في المستقبل.