Dependencies
Concord flows use task provided by external Java libraries (plugins). These are declared as Maven dependencies
in your concord.yaml. The plugin understands these declarations and uses them to power features like
task name completion and the Dependencies view in the tool window.
How it Works
When a project is opened, the plugin:
- Collects all dependency declarations from
configuration.dependencies,configuration.extraDependencies, and the same sections inside profiles. - Resolves each dependency to a local JAR file using your dependencies cache (
~/.concord/depsCacheby default). If a JAR is not found locally, it will attempt to download it from the configured repositories. - Extracts task names by scanning
@Namedannotations inside the JARs (via theMETA-INF/sisu/javax.inject.Namedindex). - Provides the extracted names as completion suggestions for task: values, scoped to the correct project.
Supported Dependency Locations
The plugin looks for dependency lists in the following YAML paths:
configuration:
dependencies:
- "mvn://com.walmartlabs.concord.plugins.basic:smtp-tasks:2.8.0"
extraDependencies:
- "mvn://com.walmartlabs.concord.plugins:git:2.12.0"
profiles:
production:
configuration:
dependencies:
- "mvn://com.walmartlabs.concord.plugins:s3:1.5.0"
Task Name Completion
Once dependencies are resolved, the plugin provides autocompletion for the task: field in flow steps:

Context-aware autocompletion for task names extracted from Maven dependencies.
Task name suggestions are scope-aware: each scope only shows tasks from its own dependencies.
Press CtrlSpace in a task: value to see all available task names for the current scope.
Error Reporting
When a dependency cannot be resolved — for example, due to incorrect coordinates or an unavailable artifact — the plugin reports the problem in three places simultaneously.
Inline Editor Errors
Each unresolvable mvn:// string is highlighted directly in the editor as an inspection error.
The error message includes the reason for the failure (e.g. "artifact not found").
Invalid dependency format (not matching the mvn://group:artifact:version pattern) is also flagged.

Unresolvable dependency string highlighted with an error and a tooltip showing the reason.
You can configure the severity of this inspection (Error, Warning, etc.) in Settings | Editor | Inspections | Concord | Unresolved dependency.
Build Sync Tab
Dependency resolution progress and errors are reported in the Build tool window under the Sync tab. Clicking an error navigates to the exact line in the YAML file where the dependency is declared.

Build tool window showing dependency resolution errors with clickable file links.
Additionally, files that contain unresolved dependencies are marked as problem files in the Project tree (file names displayed in red), making it easy to spot affected files at a glance.
Server-Only Versions
Some dependencies use special version string like latest that are resolved
at runtime by the Concord server. While these work fine when a flow is executed on the server,
the IDE cannot resolve them locally — which means task name completion, parameter validation,
and hover documentation won't work for those tasks.
The plugin detects these versions and shows a weak warning on the dependency string:

Weak warning on a dependency with latest version that cannot be resolved locally.
The cli Profile Approach
The recommended solution is to add a concrete version of the dependency to a special
profiles → cli section. The plugin resolves
dependencies from all profiles, including cli, so this gives the IDE what it needs without
affecting server execution:
configuration:
dependencies:
- "mvn://com.walmartlabs.concord.plugins.basic:smtp-tasks:latest"
profiles:
cli:
configuration:
dependencies:
- "mvn://com.walmartlabs.concord.plugins.basic:smtp-tasks:2.36.0"
The original latest version is preserved for the server, while the IDE uses the concrete 2.36.0
to provide full autocomplete and validation.
Quick Fix: Add to cli Profile
The plugin provides a quick fix that automates this process:
- Place the caret on the highlighted dependency.
- Press AltEnter to open the intention menu.
- Select Add to cli profile with concrete version.
- Enter the desired version in the dialog that appears.
The plugin will create the profiles.cli.configuration.dependencies structure automatically
if it doesn't exist, or append to the existing list.

Quick fix suggesting to add the dependency to the cli profile with a concrete version.

After applying the fix, the concrete version is added to profiles.cli and the warning is suppressed.
Once a dependency with the same groupId:artifactId exists in the cli profile,
the warning on the original latest version is automatically suppressed.
The inspection also detects other non-resolvable version patterns (e.g. placeholders
that don't contain a numeric version). It works in configuration.dependencies,
configuration.extraDependencies, and their profile-specific variants.
Dependency Change Tracking
The plugin monitors your dependency declarations for changes. When you add, remove, or modify a dependency
in configuration.dependencies (or extraDependencies), a floating toolbar appears at the top of the editor
with two actions:
- Refresh — Triggers a background reload: re-resolves JARs and re-extracts task names.
- Dismiss — Hides the notification until the next dependency change.
The initial load happens automatically when the project is opened. After that, the plugin only prompts for a reload when actual dependency values change (whitespace-only edits are ignored).
Repository Configuration
The plugin uses Concord CLI's mvn.json file (~/.concord/mvn.json) to determine which Maven repositories
to use when resolving dependencies. You can manage repositories directly from the IDE via
Settings | Tools | Concord | Repositories.

The Repositories settings page showing configured Maven repositories and the dependencies cache path.
Settings
- Dependencies cache path — Local directory where resolved JARs are stored. Defaults to
~/.concord/depsCache. This path is also passed to the Concord CLI as--deps-cache-dirwhen running flows. - Configuration file — Shows the path to
mvn.json(~/.concord/mvn.json). The CLI always reads from this fixed location. - Maven repositories — A table of configured repositories. Use the toolbar buttons to add, edit, or remove entries.
Adding a Repository
Click + to open the repository editor dialog. Each repository supports:
- ID and URL — Required. The repository identifier and its HTTP(S) endpoint.
- Authentication — Optional username and password for authenticated repositories.
- Release Policy / Snapshot Policy — Control whether releases or snapshots are enabled, and set the update policy (
never,always,daily) and checksum policy (ignore,warn,fail). - Proxy — Optional HTTP or HTTPS proxy configuration.

The repository editor dialog with authentication, policy, and proxy settings.
Changes are written to ~/.concord/mvn.json when you click Apply or OK. The same file is read by the
Concord CLI, so the IDE and CLI always share the same repository configuration.
If no repositories are configured, the plugin automatically falls back to Maven Central.
The plugin no longer uses IntelliJ's Maven plugin for repository configuration. All repository
settings are managed through mvn.json, which is shared with the Concord CLI.