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

إضافة Maven

صرّف Java و Kotlin في بناء Maven قائم باستخدام javac و kotlinc من Elide: الإضافة elide-maven-plugin، والبديل المباشر لـ Kotlin، والإعداد عبر compilerId وحده.

في هذه الصفحة

عند إضافة dev.elide:elide-maven-plugin إلى ملف pom.xml، يُصرّف البناء شيفرة Java باستخدام elide javac وشيفرة Kotlin باستخدام elide kotlinc. ويبقى لـ Maven حلّ التبعيات والاختبارات والتحزيم وكل الإضافات الأخرى.

المتطلبات

الإصدار
Maven3.9 أو أحدث
JDK الذي يشغّل Maven11 أو أحدث
Elide1.6 أو أحدث

يجب أن يكون Elide في PATH، وإلا فاضبط <executable> (راجع الإعداد).

اختيار مُخرَج

المُخرَجيُستخدم عندماما يُصرّفه
elide-maven-pluginإعداد جديد، مع Java و KotlinJava و Kotlin
elide-kotlin-maven-pluginيستخدم البناء kotlin-maven-plugin أصلًاKotlin؛ و Java عبر maven-compiler-plugin
elide-java-compilerJava فقط، مع إبقاء 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:kaptprocess-sourcesيُتخطّى ما لم تُضبط معالجات تعليقات توضيحية
elide:compile-kotlincompileelide kotlinc على المصادر الرئيسية
elide:compilecompileelide javac على المصادر الرئيسية، بعد Kotlin
elide:test-kaptprocess-test-sourcesيُتخطّى ما لم تُضبط معالجات تعليقات توضيحية
elide:test-compile-kotlintest-compileelide kotlinc على مصادر الاختبار
elide:test-compiletest-compileelide javac على مصادر الاختبار

للإضافة elide-kotlin-maven-plugin الأهداف نفسها دون أهداف Java، تحت البادئة elide-kotlin.

الإعداد

تسري كل معاملات maven-compiler-plugin و kotlin-maven-plugin (<release>، <compilerArgs>، <args>، <jvmTarget>، …). ويُضاف معامل واحد:

المعاملالافتراضيالأثر
executableelide في 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 SUCCESS

OpenRewrite واستعلامات التبعيات

للمشاريع التي تحوي 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، راجع اعتماد مشروع قائم.

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