Otros stacks
Misma receta, distinto bootstrap: Node CLI · Python · Web Component · REST API (Node) · Go · Rust
JVM · Tiempo estimado: ~15 min · Iteraciones Karajan: 2–3
Este tutorial te lleva desde un directorio vacío hasta una feature mergeada en un pequeño proyecto CLI Java (Maven + JUnit 5). También cubre la variante Gradle — solo cambia el wrapper y el comando de tests.
Deberías haber completado el setup común: npm install -g karajan-code, kj init dentro del proyecto y un kj doctor verde. Si kj doctor está rojo, arréglalo antes — kj run se negará a arrancar.
También necesitas JDK 17+ (java --version) y Maven 3.8+ (mvn --version) o un wrapper de Gradle.
Bootstrapea el proyecto.
mkdir hello-java && cd hello-javamvn -q archetype:generate -DgroupId=dev.kj.hello \ -DartifactId=hello-java -DarchetypeArtifactId=maven-archetype-quickstart \ -DinteractiveMode=falsemv hello-java/* . && rm -rf hello-javagit init -b main && git add -A && git commit -m "chore: scaffold"Abre pom.xml y sube JUnit a 5, más añade el plugin surefire para que mvn test ejecute JUnit 5:
<properties> <maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target> <junit.version>5.10.2</junit.version></properties>
<dependencies> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency></dependencies>Inicializa Karajan en el repo.
kj initkj doctorkj init crea .karajan/ y escribe la configuración del orquestador; kj doctor confirma que los CLIs de los agentes, Docker, Ollama, los puertos están sanos y detecta el JDK + build tool.
Describe la feature en lenguaje natural.
Sin fichero de spec. Sin JSON. Solo la tarea como se la dirías a un compañero:
kj run "Añade un método estático 'greet(String name)' a \src/main/java/dev/kj/hello/Greeter.java que devuelva 'Hello, <name>!'. \Añade un test JUnit 5 en src/test/java/dev/kj/hello/GreeterTest.java \que verifique la salida para el nombre 'world'." \ --methodology tdd \ --coder claude \ --reviewer codex \ --reviewer-fallback claude \ --max-iterations 5Mira el run en el HU Board.
Abre http://localhost:4000 en otra pestaña mientras el pipeline corre. Verás, en tiempo real:
También puedes hacer tail del mismo trace en el terminal:
kj tailInspecciona el resultado.
git statusgit diff --statmvn testSalida esperada de mvn test:
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0[INFO] BUILD SUCCESSMergea.
Karajan no hace push ni merge por ti por defecto — esa decisión es tuya. Cuando estés contento con el diff:
git checkout -b feat/greetergit add -A && git commit -m "feat: add Greeter.greet(name)"git push -u origin feat/greetergh pr create --fillO, si quieres que Karajan abra la PR por ti, añade --auto-commit --auto-pr a la invocación kj run.
Mismo flow, distinta herramienta de build. Bootstrapea con el wrapper de Gradle:
mkdir hello-java && cd hello-javagradle init --type java-application --dsl kotlin --test-framework junit-jupitergit init -b main && git add -A && git commit -m "chore: scaffold"Y lanza la misma invocación kj run. Karajan auto-detecta build.gradle.kts y usa ./gradlew test en lugar de mvn test.
El mismo run lanzado vía MCP desde cualquier cliente MCP-capable (Cursor, Claude Desktop, Codex):
{ "tool": "kj_run", "params": { "task": "Añade un método estático 'greet(String name)' devolviendo 'Hello, <name>!'. Test JUnit 5.", "methodology": "tdd", "coder": "claude", "reviewer": "codex", "reviewerFallback": "claude", "maxIterations": 5 }}Añade --mode strict y los collectors deterministas de seguridad:
kj run "<tarea>" \ --mode strict \ --enable-security \ --enable-sonarcloud \ --methodology tddEsto cablea los collectors OSV-Scanner y Semgrep en el audit (ruleset Java activado), y gatea el merge contra el quality gate de Sonar además del veredicto del reviewer. El analizador Java de Sonar es particularmente fuerte en null-safety y resource leaks.
Otros stacks
Misma receta, distinto bootstrap: Node CLI · Python · Web Component · REST API (Node) · Go · Rust
Volver al índice
Índice How-To · setup + troubleshooting