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 adoptelide 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
| Projet | Adéquation | Raison |
|---|---|---|
| Application Java ou Kotlin à un seul module sur Maven ou Gradle | Bonne | Les dépendances, l’arborescence des sources, les tests et le JAR se transposent dans elide.pkl. Testé. |
| Application ou service Spring Boot | Bonne | Le 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 compiler | Bonne | Choisissez Build existant : aucun elide.pkl n’est requis. |
| Builds multimodules | Non 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 inhabituel | Faible | L’agent garde Maven ou Gradle pour les étapes qu’Elide ne remplace pas ; attendez-vous à une migration partielle. |
| Android | Non testé | Le prompt n’a pas été évalué sur des builds Android. |
| JavaScript, TypeScript ou Python uniquement | Inutile | Elide 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 projet | Build existant | Testé sur |
|---|---|---|
| Java, application Spring Boot | Maven | Spring Petclinic : dépendances, ressources, tests, application exécutable, JAR |
| Java, service Spring Boot | Gradle | Service REST Spring : dépendances, ressources, tests, disponibilité HTTP |
| Application en ligne de commande Kotlin/JVM | Gradle Kotlin DSL | Un 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
-
Installez un agent et connectez-vous. Elide le lance depuis
PATH:Choix Exécutable Agent codexcodexOpenAI Codex CLI claudeclaudeClaude Code ompompOMP -
Commitez le projet, pour que la migration forme un seul diff à relire.
-
Construisez-le une fois avec Maven ou Gradle, pour disposer d’une référence qui fonctionne.
-
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.
| Question | Réponses | Option |
|---|---|---|
| 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égie | Le 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 existant | Garder 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
| Mode | Codex | Claude Code | OMP | Usage |
|---|---|---|---|---|
auto-approve | --approve-for-me | --permission-mode auto | --auto-approve | Un arbre de travail commité que vous relirez. |
manual-approve | (aucune option) | --permission-mode manual | --approval-mode= | Dépôts inconnus ou sensibles. |
yolo | --dangerously-bypass-approvals-and-sandbox | --permission-mode bypassPermissions | --approval-mode=yolo | Environnements 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.mdUtilisez-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 sortie | Signification |
|---|---|
0 | L’agent a quitté avec 0, ou une question a été annulée. |
1 | L’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. |
2 | Une option manque ou n’est pas valide. |
130 | Interrompu 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 runLancez 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-interactiveAdoption log: /path/to/project/.dev/logs/adopt-1767225600-973648.log
[3m 56s] ✓ Project adopted in 3m 56sL’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 126mselide build a produit .dev/artifacts/jar/kotlinx-cli/kotlinx-cli.jar, et gradle build passait toujours.