Error Knowledge Base Maven NON_RESOLVABLE_PARENT_POM

Non-resolvable parent POM

Maven cannot resolve the `<parent>` POM for your project from the local filesystem or configured repositories.

What This Error Means

Maven cannot resolve the <parent> POM for your project from the local filesystem or configured repositories.

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 parent coordinates in <parent> are exactly correct (including snapshot vs release).

If the parent is part of the same multi-module build, run from the reactor root (the directory containing the aggregator pom.xml).

If the parent should be local, fix <relativePath> to point at the correct parent POM file. If you want to disable local resolution, set <relativePath/> to empty so Maven resolves the parent from repositories.

If the parent is remote/private, add the correct repository (or configure a mirror) and configure credentials in ~/.m2/settings.xml under <servers>.

Force Maven to retry once:mvn -U -DskipTests package

If a cached miss exists, delete *.lastUpdated under ~/.m2/repository/<groupId path>/<artifactId>/, then rerun.

Why It Happens

Usually this comes down to the parent POM was not installed/deployed, or the coordinates are wrong, <parent.relativePath> points to a non-existent or incorrect local POM (common in CI/monorepos), the parent is in a private repository that is not configured (or requires credentials), or a cached not found result (*.lastUpdated) is preventing Maven from re-checking immediately.

Verify the Fix

Re-run mvn -DskipTests package and confirm Maven proceeds past the model-building phase, and confirm the parent POM exists in ~/.m2/repository/<groupId path>/<artifactId>/<version>/ if it is resolved remotely.

Manual parent POM checks

Open pom.xml and verify <parent> coordinates (groupId, artifactId, version) are correct.

If you rely on <relativePath>, confirm the parent POM file actually exists at that path (and that CI uses the same workspace layout).

If the parent is remote, confirm your repository configuration and credentials:mvn -q help:effective-settings

Force updates once (helps after publishing a new parent):mvn -U -DskipTests package

Examples

[ERROR] Non-resolvable parent POM for com.example:app:1.0.0: Could not find artifact com.example:parent:pom:1.0.0 in central (https://repo.maven.apache.org/maven2) and 'parent.relativePath' points at wrong local POM
[ERROR] Non-resolvable parent POM for com.example:app:1.0.0: Failed to transfer artifact com.example:parent:pom:1.0.0 from/to internal (https://repo.example.com/maven): Return code is: 401, ReasonPhrase: Unauthorized.

How parent POM resolution works

This is the part worth understanding if the quick fix did not hold. It explains what Maven is trying to do at the moment the error appears.

Maven uses the <parent> section to inherit dependencyManagement, pluginManagement, properties, and other build configuration.

Maven can resolve the parent either from a relative path (<relativePath>) or by downloading the parent POM from configured repositories.

If the parent is missing, not accessible, or blocked by auth/TLS/proxy, Maven cannot build the effective model and the build fails early.

Prevent It From Coming Back

To prevent this, publish parent POMs to a repository manager and rely on remote resolution in CI, avoid fragile <relativePath> assumptions when building in different directory layouts, and use a single mirrored repository configuration in settings.xml across environments.

Docs and source code

github.com/apache/maven/blob/maven-3.9.11/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java

Maven's model builder throws an UnresolvableModelException with the "Non-resolvable parent POM" message when the parent cannot be resolved. - GitHub

throw new UnresolvableModelException(
        "Non-resolvable parent POM " + model.getParent() + " for " + model.getGroupId() + ":" + model.getArtifactId() + ":" + model.getVersion()
                + ": " + e.getMessage(),
        model.getGroupId(),
        model.getArtifactId(),
        model.getVersion(),
        model.getParent().getGroupId(),
        model.getParent().getArtifactId(),
        model.getParent().getVersion());

Need help or found a mistake? Contact RepoFlow support for questions.

Join our mailing list