Documentation / The IDE
Run and debug
Builds with Maven, Gradle, Ant, npm or Cargo, application servers, JDWP, CDP and PL/SQL debuggers, hot swap and JVM diagnostics.
Yuli builds, runs, tests and debugs with your project's own tools. Stopping a build, a log or a test terminates the entire process tree.
Build tools
| Tool | Projects |
|---|---|
| Maven | Java with pom.xml |
| Gradle | Java and Kotlin with build.gradle |
| Ant | Java with build.xml |
| npm | JavaScript and TypeScript (detects the package manager from the lockfile) |
| Cargo | Rust |
Yuli also understands Eclipse projects without migrating them.
Toolchains
Yuli detects the JDK, Maven and Gradle, offers to download any that are missing and shows their status. You configure them in Project → Build, run and debug…: environment variables, VM options, Spring profiles, SDK, Maven, Gradle and saving.
Maven / Gradle / Ant panel
In the bottom panel (Alt+7): a filter, profiles as chips, the lifecycle phases in a strip and the remaining tasks in cards grouped by category.
Run
| Action | Shortcut |
|---|---|
| Run the last configuration | Shift+F10 |
| Debug the last configuration | Shift+F9 |
| Stop the run | Ctrl+F2 |
| Build project | Ctrl+F9 |
| Run all tests | Ctrl+Shift+F10 |
| Run tests with coverage | Ctrl+Shift+F11 |
Run configurations
Types: build, run, tests, clean, coverage, package, custom command and package.json script. They keep a history.
The console
In the Run panel, every project stack trace line, every JSP error and every Archivo.java:42 takes you to the file and line. Filter by level, by package or logger, or by My code (only what comes from the project).
Application servers
In Project → Project structure… → Servers:
| Server | Notes |
|---|---|
| Tomcat | Reloads the context when classes are updated. |
| Jetty | — |
| JBoss / WildFly | — |
| WebLogic | Domain in development mode. |
- Exploded deployment: JSP, HTML, CSS, JS and
.propertiesreach the server on save, without redeploying. Update copies the recompiled classes. - Each server runs with its own configuration inside the project, with its own ports.
- Start in run or debug mode; the debugger attaches automatically.
- Warns you if the app uses
javaxon ajakartaserver, or the other way around. - The server APIs (Servlet, JSP) are added to the editor's classpath.
Debug
| Language | Debugger |
|---|---|
| Java and JVM | Native JDWP client |
| Node.js | Chrome DevTools Protocol (CDP) |
| Oracle PL/SQL | Oracle's DBMS_DEBUG |
Features
- Variable tree and object inspection, with inline values over the code.
- Readable values: an object shows as
Owner{id=3, firstName="George", …}, a date as2026-10-15, a collection with its size. - Conditional, hit-count, logpoint and exception breakpoints.
- Expression evaluator and live value changes.
- Test debugging.
Stepping
| Action | Shortcut |
|---|---|
| Resume | F9 |
| Next line (step over) | F8 |
| Step into, your code only (step into) | F7 |
| Force step into | Alt+Shift+F7 |
| Step out of the method | Shift+F8 |
| Reload modified classes (hot swap) | Ctrl+Alt+F10 |
Hot swap
Recompiles with the project's tool and redefines the changed classes during the debug session, without restarting.
PL/SQL
To debug on Oracle, the user needs the DEBUG CONNECT SESSION privilege and the objects must be compiled with COMPILE DEBUG.
JVM diagnostics
The JVM panel (under “More” in the bottom panel) attaches to any local Java process.
| Tool | What it does |
|---|---|
| Thread dump | Groups by state and highlights locks and deadlocks. |
| Memory histogram | Memory per class. When you repeat it, shows what grew (leaks). |
| Heap dump | Saves an .hprof for Eclipse MAT or VisualVM. |
| Profile CPU and memory | With Flight Recorder: the most expensive methods, call tree, allocations and GC. If the JVM doesn't support it, profiles by thread sampling. |
Tabs: CPU, Memory, Allocations and Threads. The Project code only filter keeps just your code, and project frames take you to the exact line.
Tests and coverage
- The test explorer runs tests and reports results in the Tests panel.
- Coverage shows in the editor gutter: covered, not covered and partial.
- With Gradle, coverage is generated without touching the build, even in multi-module projects.
With the agent
Ask “build, test and start it” and the agent uses yuli_verify: a full build, all tests and one start with the default profile. If the application fails to start because of an environment variable or a profile, the agent can look into it and ask you only for the secret values.