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

تصدير POM و Maven الأصلي

سلّم مشروع Elide إلى Maven وأدوات أخرى باستخدام elide project export (ملف POM، أو JSON، أو نموذج IntelliJ)، وابنِ الناتج باستخدام elide mvn أو Maven المعتاد.

في هذه الصفحة

يحوّل elide project export مشروع elide.pkl إلى نموذج تقرؤه أدوات أخرى. ويكتب --format=pom ملف pom.xml لـ Maven، يبنيه elide mvn أو أي تثبيت لـ Maven 3.9+.

التصدير

elide project export --format=pom > pom.xml
elide project export --format=json          # resolved manifest
elide project export --format=intellij      # IntelliJ workspace model
elide project export -p app --format=pom    # another project directory

مرّر الصيغة بالشكل --format=<value>؛ ويذهب الناتج إلى stdout.

الصيغةالمحتوى
json (الافتراضي)ملف البيان بعد تقييم Pkl
pomملف POM لـ ⁦Maven:⁩ الإحداثيات، والتبعيات بنطاقاتها، وإصدار Java المستهدف، وجذور المصادر
intellijوحدات لكل مجموعة مصادر، وجذور المحتوى والمصادر، وتبعيات المكتبات، ومستوى JDK

محتوى ملف POM

elide.pklpom.xml
name<groupId> و <artifactId> و <name> (يأخذ العضو في مساحة العمل اسم مساحة العمل بوصفه <groupId>)
version<version>؛ و 0.0.0 إن لم يُضبط
jvm.target، jvm.java.releasemaven.compiler.release، .source، .target
packages، modulesالنطاق compile
compileOnly، devPackages، processorsprovided
runtimeOnlyruntime
testPackagestest
مسار ملف JAR محليالنطاق system بمسار يبدأ من ${project.basedir}
مجموعات المصادر<sourceDirectory>، <testSourceDirectory>؛ والجذور الإضافية عبر build-helper-maven-plugin
أعضاء مساحة العمل<modules> في الجذر، و <parent> في كل عضو
مُخرَج شقيق في Jar.fromقيم packages و modules و runtimeOnly الخاصة به، ما لم تكن مدرجة أصلًا

لا تُصدَّر: exclusions و substitutions و kotlinPlugins. أما المستودعات المعلنة في ملف البيان فتُصدَّر.

بناء ملف POM

المُشغّلالأمرما يحتاج إليه
Native Mavenelide mvn -- packageلا شيء آخر
Maven 3.9+ المعتادmvn packageضبط JAVA_HOME على توزيعة Elide، أو أي JDK

اجعل JAVA_HOME يشير إلى المجلد الذي يحوي bin/elide؛ فيشغّل bin/java و bin/javac فيه كلًّا من Maven ومُصرّفه وأجهزة JVM التي يُطلقها للاختبارات، كما يفعل JDK 25:

export JAVA_HOME="$(dirname "$(dirname "$(readlink -f "$(command -v elide)")")")"
mvn package

للتصريف باستخدام elide javac و elide kotlinc داخل ملف POM قائم، استخدم إضافة Maven.

مثال

amends "elide:project.pkl"

name = "hello"
version = "1.0.0"

dependencies {
  maven {
    packages { "com.google.guava:guava:33.4.8-jre" }
    testPackages { "org.junit.jupiter:junit-jupiter:5.13.4" }
  }
}

jvm {
  main = "com.example.Hello"
  target = 17
}
elide project export --format=pom > pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>hello</groupId>
  <artifactId>hello</artifactId>
  <version>1.0.0</version>
  <name>hello</name>
  <properties>
    <maven.compiler.release>17</maven.compiler.release>
    <maven.compiler.target>17</maven.compiler.target>
    <maven.compiler.source>17</maven.compiler.source>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
  <dependencies>
    <dependency>
      <groupId>com.google.guava</groupId>
      <artifactId>guava</artifactId>
      <version>33.4.8-jre</version>
    </dependency>
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter</artifactId>
      <version>5.13.4</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <build>
    <sourceDirectory>src/main/java</sourceDirectory>
    <testSourceDirectory>src/test/java</testSourceDirectory>
  </build>
</project>
elide mvn -- package
Running com.example.HelloTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.275 s -- in com.example.HelloTest
Building jar: target/hello-1.0.0.jar
BUILD SUCCESS
Total time:  5.041 s

القيود

  • التصدير في اتجاه واحد: لا يقرأ Elide الملف المولَّد أبدًا. أعد توليده بعد تغيير elide.pkl.
  • تصبح قيمة name هي الإحداثيات. والاسم الذي فيه مسافات أو محارف أخرى يرفضها Maven يحتاج إلى تعديل <groupId> و <artifactId> يدويًا.
  • لا تُعلَن إلا الإضافة build-helper-maven-plugin. وتحتاج مصادر Kotlin إلى إضافة مُصرّف Kotlin إلى البناء، مثل مُصرّف Elide.
  • لا تُضاف تبعيات الاختبار المدمجة في Elide؛ أعلن أطر الاختبار في testPackages.

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