Skip to main content
OpenIDEA does not have its own build system. It reads your build files, runs the build tool you already use, and shows the results in the IDE.

Build menu

The Build menu works with every supported build system. OpenIDEA picks the build system of the project, or of the module that holds the current file. What each action runs: Maven and Gradle use the wrapper or installation configured in Settings (see below). A TypeScript project without a tsconfig.json but with a build script runs that script. Output streams into the Build tool window (bottom). Compiler errors and warnings are grouped by file, appear in the Problems view and are underlined in the editor. Stop Build cancels a running build.

Maven

When the project has a pom.xml, a Maven tool window appears on the right. On first open, OpenIDEA imports the project with Maven in the background (effective POMs and dependency trees). The tree shows Profiles, then each project with Lifecycle, Plugins (expand to see goals), Dependencies, Run Configurations and its modules. Double-click a goal to run it, or select several and run them together. Right-click a goal for Run ’…’, Debug ’…’ and Create Run Configuration…. Running a goal from the tree creates a temporary run configuration. Toolbar:
  • Reload All Maven Projects re-reads the POMs and dependency trees.
  • Add Maven Projects adds a pom.xml the import did not find. Right-click a project to unlink it.
  • Run Maven Build runs the selected goal.
  • Execute Maven Goal… opens a prompt with goal completion (Tab to complete, Enter to run). It also lists recent commands.
  • Toggle Offline Mode (-o) and Toggle ‘Skip Tests’ Mode (-DskipTests) apply to every Maven run.
  • Analyze Dependencies… opens the Dependency Analyzer.
  • Maven Settings… opens Settings › Build, Execution, Deployment › Maven.
Profile checkboxes in the tree apply to every Maven run as well.

Reloading after changes

When you edit a POM in the editor, the tool window shows Build files changed since the last reload with a Load Maven Changes button. When build files change outside the editor (a git pull, another tool), the Maven project reloads on its own.

Editor support in pom.xml

⌘-click / Ctrl-click (or Navigate › Declaration or Usages, ⌘B / Ctrl+B) on a ${property} opens the property that defines it, in this POM or a parent POM. On a dependency or plugin without a version, it opens the <dependencyManagement> or <pluginManagement> entry that supplies it.

Maven settings

Settings › Build, Execution, Deployment › Maven:

Gradle

When the project has Gradle build files, a Gradle tool window appears on the right. On first open, OpenIDEA reads the task list with Gradle in the background. The tree shows the root project with its Tasks (grouped), Run Configurations and subprojects. Double-click a task to run it. The toolbar has Reload All Gradle Projects, Link Gradle Projects (add a build the project did not find), Run Gradle Task, Execute Gradle Task…, Toggle Offline Mode (--offline) and Analyze Dependencies…. When a build script changes, the tool window shows Build files changed since the last reload with a Load Gradle Changes button. In build scripts, Navigate › Declaration or Usages on a version catalog alias (libs.spring.boot.starter) opens its entry in gradle/libs.versions.toml, and hover shows the declaration. In the catalog, version.ref and bundle members link to their entries.

Gradle settings

Settings › Build, Execution, Deployment › Gradle:

Dependency Analyzer

Analyze Dependencies… (Maven or Gradle tool window, or the context menu of a pom.xml / build script) opens the Dependency Analyzer in an editor tab. It shows:
  • a Maven module’s dependency tree (read with dependency:tree -Dverbose, so omitted duplicates are listed too), or a Gradle project’s resolved dependencies per configuration;
  • version conflicts (Show conflicts only), as a tree or a list;
  • every path that brings a library in, with Jump to Source to the declaration.
For Maven, Exclude adds an <exclusion> to the POM and reloads.

.NET

The .NET tool window (right side; open it with .NET Workspace in Find Action) lists the solution’s projects. Select a project to see its target frameworks, project references, NuGet packages and tests:
  • search NuGet, install, update and remove packages;
  • Discover .NET Tests and Run all tests / Run test;
  • Install TRX reporting adds the reporting extension that Microsoft.Testing.Platform projects need to show results in the test tree.
Reload .NET Workspace re-reads the projects. .NET run and test configurations are detected automatically (see Run configurations).

CMake

Settings › Build, Execution, Deployment › CMake holds CMake profiles: build type, generator, CMake arguments, build directory, build arguments and environment variables. Build Project uses the first profile. Without a profile it uses the first directory that already has a CMakeCache.txt, else build. CMake targets show up as run configurations.

Cargo, Go, npm and others

These build systems have no tool window of their own:
  • Cargo: run configurations for each binary, cargo test and cargo build, plus the Build menu. In Cargo.toml, version completion lists published crate versions, and the Newer dependency version available inspection offers a quick fix to update a requirement.
  • Go: run and test configurations per module (go.work workspaces included) and the Build menu. In go.mod, version completion lists module versions.
  • npm, pnpm, yarn, bun, Deno: one run configuration per package.json script or Deno task, and ▶ icons on the scripts entries in package.json. The package manager follows the lock file.
  • Make and just: one run configuration per target or recipe.
  • Composer: when vendor/ is missing or out of date with composer.lock, a banner offers to run composer install.
Dependencies of these projects (crates, Go modules, node_modules packages, Maven and Gradle jars, the JDK, the Python interpreter’s libraries) appear under External Libraries in the Project view and open read-only.