مشاريع Elide
يستطيع Elide إنشاء وإدارة المشاريع الأصلية لـ Elide من خلال سلسلة أدوات المشروع.
يتكون مشروع Elide من:
- بيان المشروع -
elide.pkl هو بيان قوي قابل للتكوين يعتمد على Pkl. - مجلد العمل -
.dev يعمل كمجلد داخلي يستخدمه Elide لتخزين المخرجات والحالات الوسيطة لمهام البناء. - ملف القفل -
.dev/elide.build.bin و .dev/elide.lock.v2.bin هما ملفان ثنائيان للقراءة فقط تستخدمهما أدوات Elide. بشكل عام، لا ينبغي للمستخدمين تعديلهما.
واجهة سطر الأوامر للمشروع
هناك ثلاثة أوامر في واجهة سطر الأوامر يمكن أن تعتمد على مشروع Elide للعمل، ويمكنها الوصول إليه بطريقتين:
- التمرير المباشر - بتمرير
--project PATH يمكنك تحديد البيان الذي سيتم تحميله لهذا الأمر. - الاكتشاف التلقائي - إذا لم يتم توفير مسار، سيحاول الأمر العثور على بيان المشروع في المجلد الحالي.
لذلك فإن الاستدعاء البسيط لـ
elide buildسيحاول البحث عن البيان في المجلد المحلي، بينما
elide build -p PATHسيحاول جلب البيان من المسار.
هذه هي الأوامر التي تتطلب مشروعاً.| الأمر | الوصف |
|---|---|
build | يثبّت التبعيات ويُجمّع المصادر. |
install | تثبيت التبعيات. |
classpath | يُنشئ مسار الفئات للمشروع. |
بناء مشروع
elide build هو الطريقة الرئيسية لبناء المشاريع. يُنشئ رسماً بيانياً للمهام بناءً على تكوين البيان.
يمكن عرض القائمة الكاملة للمهام التي يُنشئها أمر build من بيان المشروع.
elide build --inspectلتشغيل مهمة محددة،
elide build TASKعلى سبيل المثال،
elide build :compile-java-mainبيان مشروع Elide
elide.pkl هو بيان يعتمد على Pkl يسمح بتكوين واسع لمشروع Elide.
يمتلك بيان المشروع بنية منظمة ومرنة في الوقت ذاته.
# Importing project schema
amends "elide:project.pkl"
# Importing configuration-specific schema
import "elide:Sources.pkl" as Src
# Project metadata
name = "project"
version = "1.0.0"
description = "example project"
# Project configuration
sources {
["main"] = new Src.SourceSetSpec {
paths {
"src/main/java<<>>*.java"
}
}
}بيانات المشروع الوصفية
تصريحات المستوى الأعلى لتنظيم المشروع وإدارته.| الحقل | النوع | الافتراضي | الوصف |
|---|---|---|---|
name | String | فارغ | اسم المشروع. |
version | String | فارغ | رقم إصدار المشروع. |
description | String | فارغ | وصف المشروع. |
المصادر
لكي يقوم مشروع Elide بالبناء، يجب تحديد المصادر في البيان. القالب العام لتصريح المصادر هو
import "elide:Sources.pkl" as Src
sources {
["main"] = new Src.SourceSetSpec {
paths {
"src/main/java<<>>*.java"
}
}
}يتيح لك الاستيراد استخدام مخطط المصادر ويساعد Elide على تحليل قسم المصادر في البيان.
تُصرَّح المصادر نفسها بواسطة paths، وهي قائمة من المسارات المطابقة بالأنماط.
sources، تُجمَّع المصادر حسب المجموعات وتُسنَد إلى أنواع مصادر محددة، مثل ["main"] في هذا المثال. هناك نوعان من المجموعات يتعرف عليهما Elide مما ينتج عنه رسوم بيانية بناء مختلفة أثناء elide build.
| النوع | الوصف |
|---|---|
main | مجموعة المصادر الرئيسية. |
test | مجموعة مصادر الاختبار. |
نقطة الدخول
يتيح تحديد نقطة الدخول لـ Elide اكتشاف البرامج النصية للتشغيل تلقائياً.
entrypoint {
"some.entry"
}لذلك إذا لم يُحدَّد برنامج نصي أثناء elide run، سيحاول Elide جلب مسار ملف نقطة الدخول من البيان.
البرامج النصية
البرامج النصية هي أزواج مفتاح-قيمة، مُصمَّمة للعمل بشكل مشابه لبرامج package.json الخاصة بـ Node.
إذا تلقى elide run وسيطاً غير خيار يتطابق مع اسم برنامج نصي، يُنفَّذ البرنامج النصي بدلاً من تفسير المعامل كمسار.
على سبيل المثال، إذا حددت في البرنامج النصي
scripts {
["help"] = "elide --help"
}سينتج elide run help مخرجات مشابهة لـ elide --help.
التبعيات
يأتي Elide مع مدير تبعيات مدمج.
يمكن لـ Elide أن يعمل كمُثبّت Maven.هناك طريقتان لتصريح تبعية Maven
import "elide:Jvm.pkl" as Jvm
dependencies {
maven {
packages {
"com.google.guava:guava:33.4.8-jre",
new Jvm.MavenPackageSpec {
group = "com.google.guava"
name = "guava"
version = "33.4.8-jre"
}
}
}
}تُثبَّت تبعيات Maven في مستودع Maven المحلي وتُربَط بمشروعك من خلال ملف .dev.
| النوع | الوصف |
|---|---|
packages | التبعيات المستخدمة في مسارات التجميع والتشغيل. |
modules | التبعيات المُضافة إلى مسار الوحدات للتجميع والتشغيل للاستخدام مع وحدات Java. |
testPackages | التبعيات المُضافة إلى مسارات التجميع والتشغيل لمصادر الاختبار. |
compileOnly | التبعيات المُضافة فقط إلى مسار التجميع. |
runtimeOnly | التبعيات المستخدمة فقط أثناء التشغيل، لكنها غير موجودة أثناء التجميع. |
processors | التبعيات التي تحتوي على معالجات التعليقات التوضيحية. |
kotlinPlugins | التبعيات التي تحتوي على إضافات مُجمّع Kotlin. |
exclusions | حزم Maven التي يجب استبعادها من الرسم البياني، مثلاً لإصلاح تعارضات الإصدارات يدوياً. |
devPackages | تُثبَّت بواسطة elide install، لكن لا تُضاف في أي مكان آخر، مفيدة إذا كنت تريد أشياء مثل JUnit مثبتة للاستخدام كجزء من سير عمل مخصص، دون إضافتها إلى مسار الفئات الفعلي. |
repositories | تكوينات لمستودعات Maven البعيدة الإضافية. |
import "elide:Jvm.pkl" as Jvm
dependencies {
maven {
repositories {
["central"] = new Jvm.MavenRepositorySpec {
name = "Maven Central"
description = "The central Maven repository"
url = "https:<<>>
}
[" google"] = "https://maven.google.com"
}
}
}أو تحديد مستودع محلي والاتصال بـ Maven Central
dependencies {
maven {
localRepository = ".m2/repository"
}
}| النوع | الوصف |
|---|---|
coordinates | إحداثيات هذا المشروع كمكتبة، إن كان ذلك مناسباً. |
enableDefaultRepositories | ما إذا كان سيتم تفعيل المستودعات الافتراضية مثل Maven Central. الافتراضي true. |
localRepository | المسار إلى مستودع Maven المحلي |
repositories | مجموعة من مستودعات Maven الإضافية. |
JVM
يمتلك Elide آلية تسمح بمستوى عالٍ من التكوين لكيفية تفاعل Elide مع JVM.
لبدء تكوين JVM، يجب استيراد المخطط الخاص بـ JVM.
import "elide:Jvm.pkl" as Jvm
jvm {
# your configuration here
}على المستوى العالي، يمكنك تحديد أي JVM تريد أن يستهدفها Elide وتحديد نقطة دخول لـ JVM.
jvm {
main = "test.class"
target = "latest"
javaHome = "home"
}| التكوين | الوصف |
|---|---|
main | نقطة دخول JVM. |
target | مستوى JVM المستهدف. |
javaHome | تعيين مسار Java Home مخصص. |
features | يتحكم في الميزات والإعدادات المتعلقة بدعم JVM. |
java | إعدادات لغة Java. |
flags | علامات JVM وقت التشغيل. |
defs | تعريفات وقت التشغيل (خصائص النظام). |
features لديها علامتان تتحكمان في دعم JVM لـ Elide
| الميزة | الوصف |
|---|---|
testing | ما إذا كان Elide يحتاج إلى توفير تبعيات اختبار تلقائياً لمشاريع JVM. (قيمة منطقية) |
automodules | ما إذا كانت الوحدات التلقائية مُفعَّلة (معالجة مسار الوحدات لـ JDK 9+). (قيمة منطقية) |
java يتحكم في الإعدادات المتعلقة بلغة Java مثل تكوين المُجمّع.
| الميزة | الوصف |
|---|---|
source | إصدار المصدر المُستخدَم. |
release | إصدار الإصدار المُستخدَم. |
compiler | يتحكم في الإعدادات المتعلقة بمُجمّع Java. يمتلك علامتين، mode التي تُستخدَم لتكوين المُجمّع المُستخدَم و flags التي تتحكم في العلامات الممررة إلى المُجمّع. تعرّف على المزيد حول مُجمّع Elide هنا |
flags هي مجموعة من علامات ضبط JVM.
Kotlin
يتيح Elide تكوين سلوك Kotlin.
kotlin {
# your configuration here
}| التكوين | الوصف |
|---|---|
apiLevel | مستويات Kotlin API. |
languageLevel | مستوى لغة Kotlin المستهدف. |
compilerOptions | يحدد الخيارات المتعلقة بمُجمّع Kotlin. |
features | يحدد الميزات والخيارات المتعلقة بـ Kotlin داخل Elide. |
toolchain | يصف سلسلة أدوات Kotlin المُستخدَمة للتجميع. |
plugins | يصف مجموعة من أزواج مفتاح-قيمة للخيارات المُستخدَمة لتكوين إضافة مُجمّع Kotlin. |
compilerOptions| الخيار | الوصف |
|---|---|
optIn | اشتراكات تُضاف إلى استدعاءات مُجمّع Kotlin. |
progressiveMode | ما إذا كان سيتم تفعيل الوضع التقدمي للمُجمّع. |
extraWarnings | ما إذا كان سيتم تفعيل تحذيرات وفحوصات K2 الإضافية. |
allWarningsAsErrors | الإبلاغ عن خطأ إذا كانت هناك أي تحذيرات. |
suppressWarnings | عدم إنشاء أي تحذيرات. |
verbose | تفعيل مخرجات التسجيل المفصلة. |
freeCompilerArgs | وسائط عشوائية لتمريرها إلى مُجمّع Kotlin. |
apiVersion | تعيين إصدار API صراحةً لاستدعاءات مُجمّع Kotlin؛ يُفضَّل عادةً تركه بالقيمة الافتراضية، مما يسمح لـ Elide بمحاذاة خيارات إصدار API. |
languageVersion | تعيين إصدار اللغة صراحةً لاستدعاءات مُجمّع Kotlin؛ يُفضَّل عادةً تركه بالقيمة الافتراضية، مما يسمح لـ Elide بمحاذاة خيارات إصدار اللغة. |
includeRuntime | تضمين فئات وقت تشغيل Kotlin داخل المخرج النهائي. |
noStdlib | عدم تضمين المكتبة القياسية لـ Kotlin تلقائياً في مسار الفئات. |
javaParameters | إنشاء بيانات وصفية لانعكاس Java 1.8 على معاملات الدوال. |
jvmTarget | تعيين هدف JVM صراحةً؛ يُفضَّل عادةً تركه بالقيمة الافتراضية، مما يسمح لـ Elide بمحاذاة خيارات هدف JVM مع Java، حسب الاقتضاء. |
noJdk | عدم تضمين بيئة تشغيل Java تلقائياً في مسار الفئات. |
jvmTargetValidationMode | التحقق من توافق هدف JVM بين Kotlin و Java. |
features| الميزة | الوصف |
|---|---|
kapt | تفعيل أو تعطيل معالجة التعليقات التوضيحية باستخدام kapt. |
testing | ما إذا كان سيتم تفعيل ميزات دعم الاختبار في Kotlin. |
kotlinx | ما إذا كان سيتم تفعيل تبعيات KotlinX تلقائياً في مسار الفئات. |
defaultPlugins | ما إذا كان سيتم تفعيل مجموعة الإضافات المدمجة الافتراضية لمُجمّع Kotlin. |
serialization | تفعيل أو تعطيل دعم تسلسل KotlinX. |
coroutines | تفعيل أو تعطيل دعم KotlinX Coroutines. |
reflection | ما إذا كان سيتم تفعيل ميزات الانعكاس في Kotlin. |
toolchain| التكوين | الوصف |
|---|---|
version | يصف سلسلة أدوات Kotlin مُدارة باستخدام إصدار محدد. يتم حل سلاسل الأدوات المُدارة وتنزيلها تلقائياً بواسطة Elide عند الحاجة. |
path | المسار إلى توزيعة Kotlin محلية. |
plugins {
["plugin"] = {
["setting"] = "value",
}
}JavaScript
يتيح Elide تكوين مستوى ECMA لـ JavaScript في المشروع.
javascript {
ecma = "latest"
}Native Image
يتيح Elide تكوين المُجمّع الأصلي على مستوى المشروع.
لبدء تكوين المُجمّع الأصلي، يجب استيراد مخطط محدد.
import "elide:NativeImage.pkl" as NativeImage
nativeImage {
# your configuration here
}| التكوين | الوصف |
|---|---|
verbose | ما إذا كان سيتم تفعيل المخرجات المفصلة. |
linkAtBuildTime | خيارات الربط وقت البناء. |
classInit | خيارات تهيئة الفئات. |
exclusions | الاستبعادات المُطبَّقة على حسابات مسار الفئات ومسار الوحدات. |
optimization | مستوى التحسين لـ Native Image ("auto" أو "b" أو "s" أو 1 - 4). |
pgo | إعدادات PGO (التحسين الموجَّه بالتنميط). |
driverMode | ما إذا كان سيتم استدعاء Native Image داخلياً ("embedded")، أو كعملية فرعية ("external"). |
flags | علامات إضافية لتمريرها إلى مُجمّع Native Image؛ تُضاف إلى جميع أهداف المشروع. |
cflags | علامات إضافية لتمريرها إلى مُجمّع C الأصلي؛ تُضاف إلى جميع أهداف المشروع. |
ldflags | علامات إضافية لتمريرها إلى الرابط الأصلي؛ تُضاف إلى جميع أهداف المشروع. |
defs | تعريفات خصائص النظام لتمريرها أثناء بناء Native Image. |
features | ميزات المُجمّع المُفعَّلة. |
linkAtBuildTime| الخيار | الوصف |
|---|---|
enabled | ما إذا كان الربط وقت البناء مُفعَّلاً كإعداد افتراضي. |
packages | حزم محددة للربط وقت البناء. |
classInit| الخيار | الوصف |
|---|---|
default | ما إذا كانت التهيئة وقت البناء مُفعَّلة كإعداد افتراضي (الافتراضي: "buildtime" أو "runtime"). |
buildtime | فئات أو حزم محددة لتهيئتها وقت البناء. |
runtime | فئات أو حزم محددة لتهيئتها وقت التشغيل. |
exclusions| الخيار | الوصف |
|---|---|
all | استبعادات من جميع المسارات. (القائمة الافتراضية: "org.graalvm.compiler:compiler" و "org.graalvm.espresso:espresso-svm" و "org.graalvm.nativeimage:native-image-base" و "org.graalvm.nativeimage:objectfile" و "org.graalvm.nativeimage:pointsto" و "org.graalvm.nativeimage:svm") |
classpath | استبعادات مسار الفئات المُطبَّقة. |
modulepath | استبعادات مسار الوحدات المُطبَّقة. |
pgo| الخيار | الوصف |
|---|---|
enabled | ما إذا كان PGO مُفعَّلاً (يُفعَّل فقط مع وجود ملفات تعريف). |
autoprofile | ما إذا كان سيتم تفعيل ميزات البناء التلقائي لـ PGO. |
instrument | ما إذا كان سيتم إجراء التأدية لـ PGO. |
sampling | ما إذا كان سيتم استخدام أخذ العينات لـ PGO. |
profiles | ملفات تعريف PGO المُطبَّقة. |
المحرك
هذا التكوين مسؤول عن تكوين محرك التنفيذ الذي يستخدمه Elide عند تشغيل مشروع.
engine {
# your configuration here
}| التكوين | الوصف |
|---|---|
maxContexts | يحدد الحد الأقصى لعدد سياقات الضيف المُستخدَمة عند تشغيل التطبيق. يُعيَّن افتراضياً إلى حد مناسب بناءً على المعالجات المتاحة. |
التطوير
تكوينات التطوير تسمح لـ Elide بالاندماج الكامل في عملية تطوير المشروع.
لبدء تكوين إعدادات التطوير، يجب استيراد مخطط محدد.
import "elide:Dev.pkl" as Dev
dev {
# dev configuration here
}dev عالية المستوى
| التكوين | الوصف |
|---|---|
source | تكوين مصدر المشروع. |
mcp | الإعدادات المُطبَّقة على خوادم Model Context Protocol (MCP). |
server | إعدادات خادم التطوير للمشروع. |
source| التكوين | الوصف |
|---|---|
platform | المنصة التي تستضيف مصدر هذا المشروع ("git" أو "github" أو "gitlab" أو "bitbucket" أو أي قيمة). |
project | اسم المشروع أو مساره. |
subpath | المسار الفرعي لهذا المشروع، حسب الاقتضاء. |
mcp| التكوين | الوصف |
|---|---|
resources | موارد MCP إضافية لاستخدامها في المشروع. |
registerElide | ما إذا كان سيتم تسجيل Elide كأداة MCP. |
advice | ما إذا كان سيتم تسجيل نصائح المشروع مع MCP. |
resources {
new Dev.McpResource {
# some resource config
}
}| التكوين | الوصف |
|---|---|
path | المسار إلى الملف. |
name | اسم المورد. |
description | وصف المورد. |
mimeType | نوع MIME لتعيينه صراحةً؛ يُكتشَف تلقائياً إذا لم يُقدَّم. |
server| التكوين | الوصف |
|---|---|
host | المضيف للاستماع عليه. |
port | المنفذ للاستماع عليه. |
سلسلة الأدوات
تتيح إعدادات سلسلة الأدوات تكوين إصدار محرك Elide المُستخدَم.
toolchain {
engines {
["elide"] = ">1.0.0"
}
}المخرجات
يمكن لـ Elide إنتاج مجموعة متنوعة من المخرجات التي يمكن وضعها في مشروعك. تُصرَّح هذه كأزواج مفتاح-قيمة داخل تكوين artifact.
artifacts {
["some-artifact"] = {
# some artifact
}
}| النوع | الوصف |
|---|---|
Jvm.Jar | يصف مخرج JAR. |
Jvm.SourceJar | يصف مخرج JAR للمصادر يُغلّف ملفات المصدر. |
Jvm.JavadocJar | يصف مخرج JAR لـ Javadoc يُنشئ ويُغلّف الوثائق. |
NativeImage.NativeImage | يصف مخرج Native Image داخل مشروع Elide. |
Web.StaticSite | يُصرّح عن موقع ويب ثابت كمخرج. |
Jvm.Jar،
import "elide:Jvm.pkl" as Jvm
artifacts {
["some-jar"] = new Jvm.Jar {
# some config here
}
}عندما تريد استخدام مصدر في مخرج، يجب استخدامه بالاسم المُصرَّح مسبقاً في بيانات المشروع الوصفية. على سبيل المثال، يمكنك استخدام main في مصادر المخرج، إذا كان مُصرَّحاً في البيانات الوصفية.
Jvm.Jar| التكوين | الوصف |
|---|---|
name | اسم ملف JAR الناتج. |
sources | مجموعة المصادر المُستخدَمة لبناء هذا JAR. |
resources | الموارد المُضافة إلى JAR (أزواج مفتاح-قيمة من الاسم إلى المسار). |
manifest | المفاتيح والقيم المُضمَّنة في بيان JAR. |
manifestFile | مسار ملف البيان. |
excludes | أنماط الاستبعاد. |
options | خيارات JAR. |
option| الخيار | الوصف |
|---|---|
compress | ما إذا كان سيتم تطبيق الضغط. |
defaultManifestProperties | ما إذا كان سيتم إضافة خصائص البيان الافتراضية. |
entrypoint | نقطة الدخول الرئيسية لـ JAR، إن كان ذلك مناسباً. |
Jvm.SourceJar| التكوين | الوصف |
|---|---|
sources | مجموعة المصادر المُستخدَمة لبناء هذا JAR. |
classifier | المُصنِّف لـ JAR. |
excludes | أنماط الاستبعاد من JAR المصدري. |
includes | أنماط التضمين في JAR المصدري. |
Jvm.JavadocJar| التكوين | الوصف |
|---|---|
sources | مجموعة المصادر المُستخدَمة لبناء هذا JAR. |
NativeImage.NativeImage| التكوين | الوصف |
|---|---|
sources | مجموعة المصادر المُستخدَمة لبناء هذا JAR. |
Web.StaticSite| التكوين | الوصف |
|---|---|
srcs | المسار إلى المجلد المصدري الجذر للموقع. |
domain | نطاق الإنتاج المُستخدَم لهذا الموقع. |
prefix | بادئة الويب حيث يُثبَّت هذا الموقع؛ تُراعى في الروابط والأصول. يجب أن تنتهي بشرطة مائلة. |
assets | مسار الويب العام للأصول العامة لهذا الموقع. |
stylesheets | أوراق الأنماط المُضافة إلى جميع الصفحات. |
scripts | البرامج النصية المُضافة إلى جميع الصفحات. |
hosting | مُستضيف الموقع الثابت. |
الويب
يصف هذا التكوين الإعدادات المُطبَّقة في بيئات الويب؛ تُكوّن هذه الإعدادات كيفية بناء وتقديم Elide لتطبيقات الويب والموارد ذات الصلة مثل الصور وأوراق الأنماط و JavaScript.| التكوين | الوصف |
|---|---|
css | الإعدادات المُطبَّقة على معالجة وتقديم CSS. إذا تم تحديد كل من browsers و css.targets، تُقدَّم مجموعة CSS وقت البناء. |
browsers | دعم المتصفحات لهذا المشروع، ينطبق على جميع الأهداف المبنية. |
css| التكوين | الوصف |
|---|---|
minify | ما إذا كان سيتم تفعيل تصغير كود CSS. |
targets | المنصات المستهدفة (المتصفحات) التي يجب مراعاتها عند عرض/بناء CSS. |
import "elide:Web.pkl" as Web
web {
css {
targets {
new Web.CssTarget {
# some config
}
}
}
}target| التكوين | الوصف |
|---|---|
browser | اسم نوع المتصفح المستهدف ("chrome" أو "firefox" أو "safari" أو "edge" أو "opera" أو String). |
version | إصدار المتصفح المستهدف. |
ملف قفل Elide
يحتوي ملف قفل Elide على معلومات حول بيانات المشروع الوصفية بالإضافة إلى رسم بياني للتبعيات المحلولة. يسمح ببناء أسرع عبر elide build حيث سيتم تخطي قائمة التبعيات غير المُعدَّلة واستخدام الرسم البياني المحلول للتبعيات.