يأتي Elide مع javac لـ Java 25؛ فلا حاجة إلى JDK منفصل.
تصريف الملفات المصدرية
elide javac -- -d out src/Hello.java
elide java -- -cp out Helloتأتي خيارات javac بعد --. ومن دون -d تُكتب ملفات الأصناف بجوار مصادرها. يسرد الأمر elide javac -- -help
كل خيارات javac.
خيارات Elide
تأتي خيارات Elide قبل --:
| الخيار | الغرض |
|---|---|
--jar PATH | تحزيم الناتج في ملف JAR عند PATH. |
--manifest FILE | ملف البيان لناتج --jar. |
--max-errors N | عدد الأخطاء المعروضة قبل الاكتفاء بعدّ البقية؛ 0 يعرضها كلها. تُزال التحذيرات المكررة ولا يُحدّ عددها أبدًا. |
--report-used-deps PATH | كتابة إدخالات classpath التي يشير إليها الناتج (التبعيات الصارمة في Bazel). |
--capabilities | طباعة قدرات المُصرّف بصيغة JSON. |
--persistent_worker | العمل كعامل دائم في Bazel (persistent worker)، بنمط singleplex أو multiplex. |
--classpath-cache | للعامل فقط: إعادة استخدام حالة classpath بين عمليات التصريف. يعطّله ELIDE_. |
elide javac --jar target/app.jar -- src/Main.java src/Util.java
elide javac --jar target/app.jar --manifest src/MANIFEST.MF -- src/Main.javaبناء المشاريع
يُصرّف elide build المجلدين src/main/java و src/test/java، أو مجموعات المصادر التي
يُعلنها elide.pkl. لتصريف main فقط:
elide build compile-java-mainjvm {
target = 25
java {
release = 25
compiler {
mode = "embedded"
flags { "-Xlint:all" }
}
}
features {
graalvm = false
}
}| الخاصية | المعنى | القيمة الافتراضية |
|---|---|---|
jvm.target | إصدار bytecode المستهدف؛ وهو مستوى --release عندما لا تُضبط java.release. | "auto" (21) |
jvm.java.release | مستوى --release: التصريف مقابل واجهة API الخاصة بذلك الإصدار من JDK فقط. | "auto" |
jvm.java.source | استخدام --source/--target بدلًا من --release؛ ويُتجاهل عند ضبط release. | "auto" |
jvm.java.compiler.mode | "embedded" يستخدم javac الخاص بـ Elide؛ و "external" يشغّل الموجود في jvm.javaHome. | "embedded" |
jvm.java.compiler.flags | خيارات javac إضافية؛ وتحلّ --release أو -source أو -target هنا محلّ خيارات Elide. | لا شيء |
jvm. | مستوى --release لمجموعة المصادر تلك وحدها. | "auto" (مستوى المشروع) |
jvm. | خيارات javac لمجموعة المصادر تلك، بعد compiler.flags. | لا شيء |
jvm.javaHome | مجلد Java للتصريف الخارجي ولأجهزة JVM التي تعمل في عمليات منفصلة. | المجلد الخاص بـ Elide |
jvm.debug | التصريف باستخدام -g. | true |
jvm.features.graalvm | وضع org.graalvm.nativeimage و word و collections على classpath التصريف. | false |
jvm. | وضع ملفات JAR التي لا تحتوي على واصف وحدة على مسار الوحدات كوحدات تلقائية. | true |
مجموعة المصادر التي تحتاج إلى إعدادات مختلفة، مثل مجموعة تُصرَّف مقابل java.base وحدها، تذكرها تحت
sourceSets. وتسمية مجموعة مصادر غير موجودة في المشروع تُفشل البناء.
sources {
["desktopless"] { paths { "src/desktopless/java" } }
}
jvm {
java {
sourceSets {
["desktopless"] {
flags { "--limit-modules"; "java.base" }
}
}
}
}تكتب كل عملية تصريف وسائطها في javac.args بجوار ناتجها. معالجات التعليقات التوضيحية:
تبعيات Maven.
العمّال الدائمون في Bazel
يُبقي elide javac --persistent_worker و elide kotlinc --persistent_worker مُصرّفًا واحدًا جاهزًا عبر إجراءات
Bazel. القواعد والإعداد ومثال كامل: Bazel.
أمثلة
ابدأ من قالب:
elide init --template java # Java app with a JUnit test