يحوّل 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.pkl | pom.xml |
|---|---|
name | <groupId> و <artifactId> و <name> (يأخذ العضو في مساحة العمل اسم مساحة العمل بوصفه <groupId>) |
version | <version>؛ و 0.0.0 إن لم يُضبط |
jvm.target، jvm.java.release | maven.compiler.release، .source، .target |
packages، modules | النطاق compile |
compileOnly، devPackages، processors | provided |
runtimeOnly | runtime |
testPackages | test |
| مسار ملف JAR محلي | النطاق system بمسار يبدأ من ${project.basedir} |
| مجموعات المصادر | <sourceDirectory>، <testSourceDirectory>؛ والجذور الإضافية عبر build-helper-maven-plugin |
| أعضاء مساحة العمل | <modules> في الجذر، و <parent> في كل عضو |
مُخرَج شقيق في Jar.from | قيم packages و modules و runtimeOnly الخاصة به، ما لم تكن مدرجة أصلًا |
لا تُصدَّر: exclusions و substitutions و kotlinPlugins. أما المستودعات المعلنة في ملف البيان فتُصدَّر.
بناء ملف POM
| المُشغّل | الأمر | ما يحتاج إليه |
|---|---|---|
| Native Maven | elide 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 -- packageRunning 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.