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 Maven local repository (
~/.m2/repository). If a JAR is not found locally and the IntelliJ Maven plugin is available, it will attempt to download it. - 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).
If the IntelliJ Maven plugin is installed, the plugin uses its configured repositories and local repository path.
Otherwise, it falls back to the default ~/.m2/repository location.