apache/maven · warning

The POM for {} is missing, no dependency information availab

Error message

The POM for {} is missing, no dependency information available

What it means

artifactDescriptorMissing: the artifact itself resolved, but no POM exists for it in any repository (the .pom request came back not-found). Maven treats the artifact as having no dependency information at all - it stays on the classpath, but nothing it would have depended on is pulled in.

Source

Thrown at impl/maven-core/src/main/java/org/apache/maven/internal/aether/LoggingRepositoryListener.java:101

        if (logger.isDebugEnabled()) {
            logger.warn("The metadata {} {}{}", metadata, errorType, msg, exception);
        } else {
            logger.warn("The metadata {} {}{}", metadata, errorType, msg);
        }
    }

    @Override
    public void artifactDescriptorInvalid(RepositoryEvent event) {
        // The exception stack trace is not really interesting here
        logger.warn(
                "The POM for {} is invalid, transitive dependencies (if any) will not be available: {}",
                event.getArtifact(),
                event.getException().getMessage());
    }

    @Override
    public void artifactDescriptorMissing(RepositoryEvent event) {
        logger.warn("The POM for {} is missing, no dependency information available", event.getArtifact());
    }
}

View on GitHub (pinned to e4093d4e12)

Solutions

  1. Reinstall the artifact with a real or generated POM: mvn install:install-file -Dfile=lib.jar -DgroupId=... -DartifactId=... -Dversion=... -Dpackaging=jar -DgeneratePom=true (or -DpomFile=lib.pom)
  2. Declare the library's transitive dependencies explicitly in your own POM
  3. When you publish artifacts yourself, always deploy the POM alongside the jar
  4. If a mirror is stripping .pom files, fix its include/exclude patterns

Example fix

# before
mvn install:install-file -Dfile=ojdbc8.jar -DgroupId=com.oracle -DartifactId=ojdbc8 -Dversion=19c
# after (POM generated, descriptor no longer missing)
mvn install:install-file -Dfile=ojdbc8.jar -DgroupId=com.oracle -DartifactId=ojdbc8 -Dversion=19c -DgeneratePom=true
Defensive patterns

Strategy: fallback

Validate before calling

// before adding a dependency, verify a POM exists for it in the repo
try (InputStream pom = new URL(repoUrl + artifactPath + ".pom").openStream()) {
    // descriptor available
} catch (FileNotFoundException e) {
    // plan for missing transitive info: declare the deps you need explicitly
}

Try / catch

try {
    system.resolveDependencies(session, request);
} catch (ArtifactDescriptorException e) {
    if (e.getCause() instanceof ArtifactNotFoundException anf && anf.getArtifact().getExtension().equals("pom")) {
        // POM missing: fall back to explicit dependency list
    } else { throw e; }
}

Prevention

When it happens

Trigger: A jar was installed with generatePom=false (mvn install:install-file without -DpomFile or -DgeneratePom), a third-party jar deployed without its POM, or a repository proxy filters out .pom files.

Common situations: Manually installed vendor jars (JDBC drivers, licensed SDKs) with no POM; system-scoped or file-scoped dependencies; internal proxies misconfigured to block pom packaging artifacts.

Related errors


AI-assisted analysis of apache/maven@e4093d4e12 (2026-08-21). Data as JSON: /api/errors/8451363accfd416d. Report an issue: GitHub.