What This Error Means
Maven could not resolve the plugin or one of its dependencies, usually because plugin repositories, credentials, or network access are wrong.
Read this as a precise clue about which part of the workflow broke first. Once you know the failing layer, the fix path gets much shorter.
How to Fix It
The fastest fixes here come from checking the immediate failing layer before you change anything unrelated. Make one correction at a time and re-test from the same environment.
Confirm the plugin version is correct and exists in the repository you expect.
If the plugin is hosted outside Central, ensure <pluginRepositories> (or your mirror) includes that repository.
Configure credentials for the plugin repository in ~/.m2/settings.xml under <servers> (matching repository <id>).
Force updates once:mvn -U -DskipTests package
Delete cached failures under ~/.m2/repository/<groupId path>/<artifactId>/ (including *.lastUpdated), then retry.
If resolution still fails, run with debug logs to see which repositories Maven is attempting:mvn -X -DskipTests package
Why It Happens
Usually this comes down to the plugin version does not exist in any configured plugin repository, a mirror/proxy repository is misconfigured and does not proxy the plugin's upstream repository, the plugin repository requires authentication (401/403) and Maven is not sending valid credentials, or a cached failed download (*.lastUpdated) prevents Maven from retrying immediately.
Verify the Fix
Re-run your Maven build and confirm the plugin downloads and executes successfully, and confirm the plugin artifacts exist under ~/.m2/repository/.
Manual plugin repository checks
Identify the exact plugin coordinates Maven is trying to resolve (copy from the error output).
Force a remote re-check once:mvn -U -DskipTests package
Print effective settings to check mirrors/proxies/servers:mvn -q help:effective-settings
If the plugin is internal, confirm your repository configuration includes the plugin repository (or a mirror that proxies it).
Examples
[ERROR] Plugin org.apache.maven.plugins:maven-surefire-plugin:3.2.5 or one of its dependencies could not be resolved: Could not find artifact org.apache.maven.plugins:maven-surefire-plugin:jar:3.2.5 in central (https://repo.maven.apache.org/maven2)
[ERROR] Plugin com.example:internal-plugin:1.0.0 or one of its dependencies could not be resolved: Failed to read artifact descriptor for com.example:internal-plugin:jar:1.0.0 How Maven resolves plugins
Maven resolves build plugins separately from regular project dependencies. Plugins are downloaded from plugin repositories (which may be mirrored) and cached in the same local repository (~/.m2/repository). If plugin repositories are misconfigured, blocked, or missing required credentials, plugin resolution fails.
Prevent It From Coming Back
To prevent this, pin plugin versions in pom.xml and keep them consistent across modules, use a repository manager mirror that proxies plugin repositories and caches them for CI stability, and avoid duplicating plugin repository configuration across many projects, centralize it in settings.xml or a parent POM.
Docs and source code
github.com/apache/maven/blob/maven-3.9.11/maven-core/src/main/java/org/apache/maven/plugin/prefix/internal/DefaultPluginPrefixResolver.java
When resolving plugin descriptors, Maven logs a warning and rethrows PluginResolutionException (often containing "Plugin ... or one of its dependencies could not be resolved"). - GitHub
} catch (PluginResolutionException e) {
logger.warn("Failed to retrieve plugin descriptor for {}: {}", plugin, e.getMessage());
throw e;
}