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

اعتماد مشروع قائم

رحّل مشروع Java أو Kotlin أو Spring Boot من Maven أو Gradle إلى Elide باستخدام elide adopt: ما الذي يشغّله، وخياراته ورموز الخروج، والمشاريع التي يناسبها، ومثال عملي.

في هذه الصفحة

يشغّل elide adopt وكيل برمجة بالذكاء الاصطناعي (Codex أو Claude Code أو OMP) في المجلد الحالي مع موجّه ترحيل مدمج. يقرأ الوكيل إعداد البناء ويعدّل الملفات ويشغّل Elide؛ أما Elide نفسه فلا يعدّل شيئًا. يستهدف الموجّه مشاريع Java و Kotlin المبنية باستخدام Maven أو Gradle، وخاصة Spring Boot، ويطلب من الوكيل إبقاء أي لغات أخرى تعمل.

elide adopt

ينقل elide adopt البناء إلى elide.pkl. للإبقاء على Maven أو Gradle أو Bazel واستخدام مُصرّفات Elide داخلها، راجع التكامل مع أدوات البناء.

المشاريع التي يناسبها

المشروعالملاءمةالسبب
تطبيق Java أو Kotlin أحادي الوحدة على Maven أو Gradleجيدةتُنقل التبعيات وبنية المصادر والاختبارات وملف JAR إلى elide.pkl. مُختبَر.
تطبيق أو خدمة Spring Bootجيدةيفحص الموجّه الصنف الرئيسي وتبعيات Spring وإضافاته والموارد والاختبارات والتحزيم. مُختبَر.
بناء JVM تريد الإبقاء عليه، مع استخدام Elide للتشغيل والتصريف فقطجيدةاختر البناء الحالي: لا حاجة إلى elide.pkl.
عمليات البناء متعددة الوحداتغير مُختبَرةتتوفر مساحات العمل في Elide، لكن الموجّه لم يُقيَّم عليها.
إضافات مخصصة كثيرة، أو مصادر مولّدة، أو معالجة غير معتادة للتعليقات التوضيحيةضعيفةيُبقي الوكيل على Maven أو Gradle للخطوات التي لا يحل Elide محلها؛ توقّع ترحيلًا جزئيًا.
Androidغير مُختبَرةلم يُقيَّم الموجّه على عمليات بناء Android.
JavaScript أو TypeScript أو Python فقطغير لازميشغّل Elide سكربتات package.json ونقاط دخول pyproject.toml وملفات node:test دون ترحيل؛ راجع إعداد المشروع.

المشاريع المُختبَرة

تجتاز هذه الأنواع من المشاريع elide install و elide build و elide test وبدء التشغيل والبناء الأصلي، انطلاقًا من نسخة جديدة من المستودع، مع الوكيل ⁦Codex:⁩

نوع المشروعالبناء الحالياختُبر على
Java، تطبيق Spring BootMavenSpring ⁦Petclinic:⁩ التبعيات، الموارد، الاختبارات، تطبيق قابل للتشغيل، JAR
Java، خدمة Spring BootGradleخدمة REST من ⁦Spring:⁩ التبعيات، الموارد، الاختبارات، الجاهزية عبر HTTP
تطبيق سطر أوامر ⁦Kotlin/JVM⁩Gradle Kotlin DSLوحدة واحدة مع التسلسل والروتينات المشتركة في Kotlin

يظهر الوكيل Claude Code على تطبيق Kotlin في المثال العملي.

قبل أن تبدأ

  1. ثبّت وكيلًا وسجّل الدخول إليه. يشغّله Elide من PATH:

    الاختيارالملف التنفيذيالوكيل
    codexcodexOpenAI Codex CLI
    claudeclaudeClaude Code
    ompompOMP
  2. أودِع المشروع (commit)، كي يكون الترحيل فرقًا واحدًا قابلًا للمراجعة.

  3. ابنِه مرة واحدة باستخدام Maven أو Gradle، كي تكون لديك نقطة بداية معروفة تعمل.

  4. انتقل إلى المشروع بالأمر cd، أو مرّر -p DIR.

التشغيل التفاعلي

يطرح elide adopt ثلاثة أسئلة، ثم يشغّل الوكيل. والخيارات تجيب عن السؤال مسبقًا.

السؤالالإجاباتالخيار
Use elide build with an elide.pkl project manifest?نعم (افتراضي): بناء Elide. لا: البناء الحالي--build elide، --build existing
Which AI coding harness should perform the migration?codex، claude، omp--harness
How should the harness approve tool calls?auto-approve، manual-approve، yolo--approval
elide adopt --build elide --harness claude

الضغط على Esc عند سؤال يُنهي برمز الخروج 0 دون تشغيل الوكيل. ويوقف Ctrl+C الوكيل ويُنهي برمز الخروج 130.

استراتيجية البناء

الاستراتيجيةيطلب الموجّه من الوكيل أن
بناء Elideيكتب elide.pkl: يُبقي src/main/src/test دون التصريح بمجموعات مصادر، ويحافظ على إصدارات التبعيات ونطاقاتها، ويضبط هدف Java وإصدارها، ويعرّف ملف JAR مع صنفه الرئيسي. ويُبقي على Maven أو Gradle إلى أن تنجح الأوامر الأخيرة elide install و elide build و elide test و elide run والبناء الأصلي كلها.
البناء الحالييُبقي على Maven أو Gradle نظامًا للبناء؛ ويستخدم بيئة التشغيل وأدوات Elide حيث تفيد فقط؛ ولا ينشئ elide.pkl لأجل elide build وحده.

تنتهي الاستراتيجيتان بملخص للملفات المتغيرة، والتحقق الذي جرى، وما تبقى من عمل.

وضع الموافقة

الوضعCodexClaude CodeOMPالاستخدام
auto-approve--approve-for-me--permission-mode auto--auto-approveشجرة عمل مودَعة ستراجعها.
manual-approve(دون خيار)--permission-mode manual--approval-mode=always-askالمستودعات غير المألوفة أو الحساسة.
yolo--dangerously-bypass-approvals-and-sandbox--permission-mode bypassPermissions--approval-mode=yoloالبيئات المؤقتة الخالية من الأسرار.

مع auto-approve أو yolo، يشغّل Elide الوكيل في وضع الدفعات (codex exec --skip-git-repo-check، claude --print، omp --print) ويعرض سطر تقدم؛ ويبثّ --log أيضًا مخرجات الوكيل. ومع manual-approve، يعمل الوكيل تفاعليًا وتُعرض مخرجاته دائمًا.

التشغيل دون أسئلة

elide adopt \
  --build elide \
  --harness codex \
  --approval auto-approve \
  --non-interactive

يتطلب --non-interactive الخيارات --build و --harness و --approval؛ وإن غاب أحدها ينتهي برمز الخروج 2. وهو يرفض manual-approve. ودون طرفية، ينتهي elide adopt برمز الخروج 1 ما لم يُمرَّر --non-interactive والخيارات الثلاثة.

إضافة توجيهات

يضيف --prompt-append FILE ملفًا بترميز UTF-8 إلى نهاية الموجّه تحت Additional adoption guidance:. كرّره لإضافة عدة ملفات بالترتيب:

elide adopt --prompt-append ./adoption-guidance.md --prompt-append ./team-rules.md

استخدمه للحقائق التي لا يستطيع الوكيل استنتاجها: المستودعات الداخلية، وأي بناء يجب الإبقاء عليه، والأوامر التي يجب أن تستمر في العمل.

المخرجات ورموز الخروج

تعديلات الوكيل هي المخرجات الوحيدة في المشروع. في المثال العملي كانت ملف elide.pkl جديدًا وإدخالات في .gitignore لـ .dev/. يطبع Elide السطر Adoption log: PATH قبل البدء؛ ويُحفظ السجل في .dev/logs/adopt-<timestamp>-<pid>.log داخل المشروع.

رمز الخروجالمعنى
0انتهى الوكيل برمز الخروج 0، أو أُلغي سؤال.
1فشل الوكيل (Error: claude exited unsuccessfully (exit status: 3))، أو تعذّر تشغيله (Error: failed to launch codex: No such file or directory)، أو تعذّرت قراءة ملف --prompt-append، أو لا توجد طرفية.
2خيار مفقود أو غير صالح.
130قُوطع بالضغط على Ctrl+C.

التحقق من الترحيل

رمز الخروج 0 يعني أن الوكيل أنهى عمله، لا أن الترحيل صحيح. راجع الفرق: إصدارات التبعيات، ومجلدات المصادر والموارد، ونقطة الدخول، والاختبارات، والتحزيم. ثم شغّل:

elide install
elide build
elide test
elide run

شغّل أيضًا بناء Maven أو Gradle الأصلي ما دام موجودًا. إن كانت النتيجة خاطئة، فتراجع عن التغييرات، وأضف توجيهات باستخدام --prompt-append، وشغّله مجددًا.

مثال عملي

تطبيق سطر أوامر Kotlin أحادي الوحدة مبني باستخدام Gradle Kotlin ⁦DSL:⁩ Kotlin 2.3.20، و JVM 17، و kotlinx-coroutines-core 1.10.2، و kotlinx-serialization-json 1.9.0، واختبار kotlin("test") واحد. بعد إيداعه:

elide adopt --build elide --harness claude --approval auto-approve --non-interactive
Adoption log: /path/to/project/.dev/logs/adopt-1767225600-973648.log
[3m 56s] ✓ Project adopted in 3m 56s

أضاف الوكيل elide.pkl وملف .gitignore، ولم يغيّر شيئًا آخر. يحافظ ملف البيان على إصدارات Gradle وينقل الباقي إلى مفاهيم ⁦Elide:⁩

amends "elide:project.pkl"

import "elide:Jvm.pkl" as Jvm
import "elide:Kotlin.pkl" as Kotlin

name = "kotlinx-cli"
version = "1.0.0"

dependencies {
  maven {
    packages {
      "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2"
      "org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0"
      // Gradle mediates annotations to 23.0.0 (via coroutines); Elide's nearest-wins picks 13.0.
      "org.jetbrains:annotations:23.0.0"
    }
    testPackages {
      // Gradle's `kotlin("test")` with `useJUnitPlatform()` resolves to the JUnit 5 variant.
      "org.jetbrains.kotlin:kotlin-test-junit5:2.3.20"
      // The JUnit launcher; with `testing = false`, Elide does not bundle one.
      "org.junit.platform:junit-platform-console:1.10.1"
    }
  }
}

jvm {
  main = "dev.elide.samples.MainKt"
  target = 17
  features {
    // JUnit comes from testPackages above, as with Gradle's `kotlin("test")`; Elide's bundled JUnit is off.
    testing = false
  }
  java {
    source = 17
    release = 17
  }
}

kotlin {
  // Matches the Kotlin Gradle plugin version in build.gradle.kts.
  toolchain = new Kotlin.ManagedKotlinToolchain {
    version = "2.3.20"
  }
  compilerOptions {
    jvmTarget = 17
  }
  features {
    // KotlinX libraries are declared explicitly above, at the versions Gradle uses; only the
    // serialization compiler plugin (Gradle's `plugin.serialization`) is enabled.
    kotlinx = false
    serialization = true
    coroutines = false
    atomicfu = false
    powerAssert = false
    metro = false
    reflection = false
  }
}

artifacts {
  ["jar"] = new Jvm.Jar {
    name = "kotlinx-cli"
    main = "dev.elide.samples.MainKt"
  }
}

التحقق انطلاقًا من مجلد .dev/ نظيف:

$ elide install
[504ms] ✓ Resolved 25 Maven dependencies (476ms)
[505ms] ✓ Dependencies installed in 484ms
$ elide test
 1 pass
 0 skip
 0 fail
Ran one test across one file. (0.57s)
$ elide run
[ 16ms] ⇥ Dependencies ready (Up to date)
[ 16ms] ⇥ Kotlin main compilation skipped (Up to date)
[ 16ms] ⇥ Java main compilation skipped (Up to date)
[ 17ms] ⇥ Packaging jar 'jar' skipped (Up to date)
{"completed":["PARSE","EMIT"]}
[138ms] ✓ JVM jar application completed successfully (121ms)
[139ms] ✓ Build successful in 126ms

أنتج elide build الملف .dev/artifacts/jar/kotlinx-cli/kotlinx-cli.jar، وظل gradle build ينجح.

انظر أيضًا

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