Aller au contenu

Adopter un projet existant

Migrez un projet Java, Kotlin ou Spring Boot de Maven ou Gradle vers Elide avec elide adopt : ce que la commande lance, ses options et codes de sortie, les projets auxquels elle convient et un exemple complet.

Sur cette page

elide adopt lance un agent de code IA (Codex, Claude Code ou OMP) dans le répertoire courant avec un prompt de migration intégré. L’agent lit le build, modifie les fichiers et exécute Elide ; Elide ne modifie rien lui-même. Le prompt vise les projets Java et Kotlin construits avec Maven ou Gradle, en particulier Spring Boot, et demande à l’agent de garder les autres langages fonctionnels.

elide adopt

elide adopt migre le build vers elide.pkl. Pour conserver Maven, Gradle ou Bazel et utiliser les compilateurs d’Elide à l’intérieur, voir Intégration aux outils de build.

Projets concernés

ProjetAdéquationRaison
Application Java ou Kotlin à un seul module sur Maven ou GradleBonneLes dépendances, l’arborescence des sources, les tests et le JAR se transposent dans elide.pkl. Testé.
Application ou service Spring BootBonneLe prompt vérifie la classe principale, les dépendances et plugins Spring, les ressources, les tests et l’empaquetage. Testé.
Un build JVM que vous voulez garder, avec Elide uniquement pour exécuter et compilerBonneChoisissez Build existant : aucun elide.pkl n’est requis.
Builds multimodulesNon testéElide a des espaces de travail, mais le prompt n’a pas été évalué dessus.
Nombreux plugins personnalisés, sources générées, traitement d’annotations inhabituelFaibleL’agent garde Maven ou Gradle pour les étapes qu’Elide ne remplace pas ; attendez-vous à une migration partielle.
AndroidNon testéLe prompt n’a pas été évalué sur des builds Android.
JavaScript, TypeScript ou Python uniquementInutileElide exécute les scripts de package.json, les points d’entrée de pyproject.toml et les fichiers node:test sans migration ; voir Configuration du projet.

Projets testés

Ces types de projets passent elide install, elide build, elide test, le démarrage et le build d’origine, à partir d’un checkout neuf, avec l’agent Codex :

Type de projetBuild existantTesté sur
Java, application Spring BootMavenSpring Petclinic : dépendances, ressources, tests, application exécutable, JAR
Java, service Spring BootGradleService REST Spring : dépendances, ressources, tests, disponibilité HTTP
Application en ligne de commande Kotlin/JVMGradle Kotlin DSLUn seul module avec la sérialisation et les coroutines Kotlin

L’agent Claude Code est présenté sur l’application Kotlin dans l’exemple complet.

Avant de commencer

  1. Installez un agent et connectez-vous. Elide le lance depuis PATH :

    ChoixExécutableAgent
    codexcodexOpenAI Codex CLI
    claudeclaudeClaude Code
    ompompOMP
  2. Commitez le projet, pour que la migration forme un seul diff à relire.

  3. Construisez-le une fois avec Maven ou Gradle, pour disposer d’une référence qui fonctionne.

  4. Placez-vous dans le projet avec cd, ou passez -p DIR.

Exécution interactive

elide adopt pose trois questions, puis lance l’agent. Les options répondent à une question à l’avance.

QuestionRéponsesOption
Use elide build with an elide.pkl project manifest?Oui (par défaut) : Build Elide. Non : Build existant--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

Échap sur une question quitte avec le code 0 sans lancer l’agent. Ctrl+C arrête l’agent et quitte avec le code 130.

Stratégie de build

StratégieLe prompt demande à l’agent de
Build ElideÉcrire elide.pkl : garder src/main/src/test sans déclarer de source sets, conserver les versions et portées des dépendances, définir la cible et la version de Java, définir le JAR avec sa classe principale. Garder Maven ou Gradle jusqu’à ce qu’un dernier elide install, elide build, elide test, elide run et le build d’origine réussissent tous.
Build existantGarder Maven ou Gradle comme build ; n’utiliser l’environnement d’exécution et les outils d’Elide que là où ils aident ; ne pas créer elide.pkl uniquement pour elide build.

Les deux se terminent par un résumé des fichiers modifiés, de la validation effectuée et de ce qu’il reste à faire.

Mode d’approbation

ModeCodexClaude CodeOMPUsage
auto-approve--approve-for-me--permission-mode auto--auto-approveUn arbre de travail commité que vous relirez.
manual-approve(aucune option)--permission-mode manual--approval-mode=always-askDépôts inconnus ou sensibles.
yolo--dangerously-bypass-approvals-and-sandbox--permission-mode bypassPermissions--approval-mode=yoloEnvironnements jetables sans secrets.

Avec auto-approve ou yolo, Elide lance l’agent en mode batch (codex exec --skip-git-repo-check, claude --print, omp --print) et affiche une ligne de progression ; --log diffuse aussi la sortie de l’agent. Avec manual-approve, l’agent s’exécute de façon interactive et sa sortie est toujours affichée.

Exécution sans questions

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

--non-interactive exige --build, --harness et --approval ; s’il en manque une, la commande sort avec 2. Elle refuse manual-approve. Sans terminal, elide adopt sort avec 1, sauf si --non-interactive et les trois options sont fournis.

Ajouter des consignes

--prompt-append FILE ajoute un fichier UTF-8 à la fin du prompt, sous Additional adoption guidance:. Répétez l’option pour en ajouter plusieurs, dans l’ordre :

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

Utilisez-la pour les faits que l’agent ne peut pas déduire : dépôts internes, build à conserver, commandes qui doivent continuer à fonctionner.

Sortie et codes de sortie

Les modifications de l’agent sont la seule sortie dans le projet. Dans l’exemple complet, il s’agissait d’un nouveau elide.pkl et d’entrées .gitignore pour .dev/. Elide affiche Adoption log: PATH avant de commencer ; le journal est conservé dans .dev/logs/adopt-<timestamp>-<pid>.log dans le projet.

Code de sortieSignification
0L’agent a quitté avec 0, ou une question a été annulée.
1L’agent a échoué (Error: claude exited unsuccessfully (exit status: 3)), n’a pas pu démarrer (Error: failed to launch codex: No such file or directory), un fichier --prompt-append est illisible, ou il n’y a pas de terminal.
2Une option manque ou n’est pas valide.
130Interrompu avec Ctrl+C.

Valider la migration

Le code 0 signifie que l’agent a terminé, pas que la migration est correcte. Relisez le diff : versions des dépendances, répertoires des sources et des ressources, point d’entrée, tests et empaquetage. Puis lancez :

elide install
elide build
elide test
elide run

Lancez aussi le build Maven ou Gradle d’origine, tant qu’il existe. Si le résultat est incorrect, annulez les modifications, ajoutez des consignes avec --prompt-append et relancez.

Exemple complet

Une application Kotlin en ligne de commande à un seul module, construite avec Gradle Kotlin DSL : Kotlin 2.3.20, JVM 17, kotlinx-coroutines-core 1.10.2, kotlinx-serialization-json 1.9.0 et un test kotlin("test"). Après un commit :

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

L’agent a ajouté elide.pkl et un .gitignore, sans rien changer d’autre. Le manifeste conserve les versions de Gradle et transpose le reste dans les termes d’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"
  }
}

Validation à partir d’un .dev/ vide :

$ 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 a produit .dev/artifacts/jar/kotlinx-cli/kotlinx-cli.jar, et gradle build passait toujours.

Voir aussi

Cette page vous a-t-elle aidé ?