Перейти до вмісту

Перенесення наявного проєкту

Перенесіть проєкт на 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 BootGradleREST-сервіс Spring: залежності, ресурси, тести, готовність за HTTP
Консольний застосунок Kotlin/JVMGradle Kotlin DSLОдин модуль із серіалізацією та корутинами Kotlin

Агента Claude Code показано на застосунку Kotlin у докладному прикладі.

Перед початком

  1. Встановіть агента й увійдіть у нього. Elide запускає його з PATH:

    ВибірВиконуваний файлАгент
    codexcodexOpenAI Codex CLI
    claudeclaudeClaude Code
    ompompOMP
  2. Зробіть коміт проєкту, щоб міграція стала одним набором змін, який можна переглянути.

  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 без оголошення наборів вихідних файлів, зберегти версії та області видимості залежностей, задати цільову версію та release для 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 і далі проходив.

Див. також

Чи була ця сторінка корисною?