عند إضافة dev.elide:elide-maven-plugin إلى ملف pom.xml، يُصرّف البناء شيفرة Java باستخدام elide javac وشيفرة
Kotlin باستخدام elide kotlinc. ويبقى لـ Maven حلّ التبعيات والاختبارات والتحزيم وكل الإضافات الأخرى.
المتطلبات
| الإصدار | |
|---|---|
| Maven | 3.9 أو أحدث |
| JDK الذي يشغّل Maven | 11 أو أحدث |
| Elide | 1.6 أو أحدث |
يجب أن يكون Elide في PATH، وإلا فاضبط <executable> (راجع الإعداد).
اختيار مُخرَج
| المُخرَج | يُستخدم عندما | ما يُصرّفه |
|---|---|---|
elide-maven-plugin | إعداد جديد، مع Java و Kotlin | Java و Kotlin |
elide-kotlin-maven-plugin | يستخدم البناء kotlin-maven-plugin أصلًا | Kotlin؛ و Java عبر maven-compiler-plugin |
elide-java-compiler | Java فقط، مع إبقاء maven-compiler-plugin كما هو | Java |
الثلاثة متاحة في Maven Central تحت dev.elide، بالإصدار 1.0.0.
التثبيت
<build>
<plugins>
<plugin>
<groupId>dev.elide</groupId>
<artifactId>elide-maven-plugin</artifactId>
<version>1.0.0</version>
<extensions>true</extensions>
</plugin>
</plugins>
</build>الإعداد <extensions>true</extensions> إلزامي: فهو يستبدل روابط التصريف الافتراضية. ومعه تضيف الإضافة
src/main/kotlin و src/test/kotlin جذرين للمصادر، وتضيف تبعية kotlin-stdlib إن لم يُعلن ملف POM أي واحدة.
لاستبدال kotlin-maven-plugin في مكانه، غيّر إحداثياته إلى dev.elide:elide-kotlin-maven-plugin:1.0.0 واحتفظ
بإعداده؛ فهو يقبل المعاملات نفسها.
لـ Java وحدها، دون إضافة جديدة:
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.15.0</version>
<dependencies>
<dependency>
<groupId>dev.elide</groupId>
<artifactId>elide-java-compiler</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
<configuration>
<compilerId>elide</compilerId>
</configuration>
</plugin>الأهداف
حين تكون الامتدادات مفعّلة، ترتبط الأهداف بدورة الحياة؛ ولا يحتاج أي منها إلى <execution>.
| الهدف | المرحلة | ما يشغّله |
|---|---|---|
elide:kapt | process-sources | يُتخطّى ما لم تُضبط معالجات تعليقات توضيحية |
elide:compile-kotlin | compile | elide kotlinc على المصادر الرئيسية |
elide:compile | compile | elide javac على المصادر الرئيسية، بعد Kotlin |
elide:test-kapt | process-test-sources | يُتخطّى ما لم تُضبط معالجات تعليقات توضيحية |
elide:test-compile-kotlin | test-compile | elide kotlinc على مصادر الاختبار |
elide:test-compile | test-compile | elide javac على مصادر الاختبار |
للإضافة elide-kotlin-maven-plugin الأهداف نفسها دون أهداف Java، تحت البادئة elide-kotlin.
الإعداد
تسري كل معاملات maven-compiler-plugin و kotlin-maven-plugin (<release>، <compilerArgs>، <args>،
<jvmTarget>، …). ويُضاف معامل واحد:
| المعامل | الافتراضي | الأثر |
|---|---|---|
executable | elide في PATH | مسار الملف التنفيذي elide |
<plugin>
<groupId>dev.elide</groupId>
<artifactId>elide-maven-plugin</artifactId>
<version>1.0.0</version>
<extensions>true</extensions>
<configuration>
<executable>/opt/elide/bin/elide</executable>
</configuration>
</plugin>مع elide-java-compiler، اضبط <executable> في إعداد maven-compiler-plugin بدلًا من ذلك.
مثال
مشروع فيه كائن Kotlin وصنف رئيسي بلغة Java واختبار JUnit:
pom.xml
src/main/kotlin/com/example/Greeter.kt
src/main/java/com/example/Hello.java
src/test/java/com/example/GreeterTest.java<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>hello</artifactId>
<version>1.0.0</version>
<properties>
<maven.compiler.release>21</maven.compiler.release>
</properties>
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.13.4</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>dev.elide</groupId>
<artifactId>elide-maven-plugin</artifactId>
<version>1.0.0</version>
<extensions>true</extensions>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.5.4</version>
</plugin>
</plugins>
</build>
</project>mvn package[INFO] Added kotlin-stdlib dependency, version 2.3.21
[INFO] --- elide:1.0.0:kapt (default-kapt) @ hello ---
[INFO] No annotation processors configured, skipping kapt
[INFO] --- elide:1.0.0:compile-kotlin (default-compile-kotlin) @ hello ---
[INFO] ✅ Kotlin sources compiled to `classes` (1.3s)
[INFO] --- elide:1.0.0:compile (default-compile) @ hello ---
[INFO] Compiling 1 source file with elide [forked debug release 21] to target/classes
[INFO] --- elide:1.0.0:test-compile (default-test-compile) @ hello ---
[INFO] Compiling 1 source file with elide [forked debug release 21] to target/test-classes
[INFO] --- surefire:3.5.4:test (default-test) @ hello ---
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO] --- jar:3.5.0:jar (default-jar) @ hello ---
[INFO] Building jar: target/hello-1.0.0.jar
[INFO] BUILD SUCCESSOpenRewrite واستعلامات التبعيات
للمشاريع التي تحوي elide.pkl، راجع OpenRewrite
وفهرس شيفرة التبعيات. لا تضيف إضافة المُصرّف أهدافًا لإعادة الكتابة أو لفهرس الشيفرة، ولا
تمرّر إلى هذه الأوامر مخطط التبعيات الذي حلّه Maven. راجع
حدود إعداد المشروع قبل استخدامها إلى جانب Maven.
القيود
- لا يعمل kapt: يفشل أي تنفيذ لـ
kaptضُبطت فيه معالجات تعليقات توضيحية. - تفشل إضافات مُصرّف Kotlin (
<compilerPlugins>) غير all-open و no-arg و sam-with-receiver و assignment و Lombok بخطأ من المُصرّف. - إصدار
kotlin-stdlibالمضافة هو 2.3.21؛ أعلنkotlin-stdlibبنفسك لاختيار غيره. - يشغّل كل تصريف عملية
elideجديدة؛ ولا توجد عملية مُصرّف دائمة مشتركة بين الوحدات.
لتشغيل بناء Maven كله تشغيلًا أصليًا بدلًا من ذلك، راجع تصدير POM و Maven الأصلي. وللتخلي عن Maven، راجع اعتماد مشروع قائم.