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
- 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)
- Declare the library's transitive dependencies explicitly in your own POM
- When you publish artifacts yourself, always deploy the POM alongside the jar
- 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
- Always pass -DgeneratePom=true or -DpomFile=... to install:install-file
- Verify third-party artifacts have POMs before adding them
- Publish POMs with every jar you deploy
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
- The POM for {} is invalid, transitive dependencies (if any)
- Error updating group repository metadata
- Unable to lookup org.eclipse.aether.RepositorySystem
- Unknown error during artifact resolution, {}, {}
- Unable to get dependency information for " + artifact.getId(
AI-assisted analysis of apache/maven@e4093d4e12 (2026-08-21).
Data as JSON: /api/errors/8451363accfd416d.
Report an issue: GitHub.