Перейти к содержимому

Перенос существующего проекта

Перенесите проект на 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 по-прежнему проходил успешно.

См. также

Была ли эта страница полезной?