2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

The POM for {dependency} is missing

Last updated at Posted at 2025-11-30

はじめに

Maven を利用している際に遭遇することのある "The POM for {dependency} is missing, no dependency information available" というエラーに関する備忘録です。

エラーの例
[WARNING] The POM for jakarta.xml.bind:jakarta.xml.bind-api:jar:4.0.0 is missing, no dependency information available
[WARNING] The POM for com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:jar:2.18.2 is missing, no dependency information available
[WARNING] The POM for com.fasterxml.jackson.core:jackson-databind:jar:2.11.0 is missing, no dependency information available
[WARNING] The POM for jakarta.validation:jakarta.validation-api:jar:3.0.2 is missing, no dependency information available

エラーの原因

エラーメッセージは「dependencypom.xml が無い」と言っていますが、実際に pom.xml の欠損がエラーの原因であるケースは稀だと思います。たいていは Transitive Dependency の解決がうまくいっていないことが原因です。

解決方法

問題が発生している状況に応じて対処方法が変わります。

例えば、Maven の dependency:go-offline を次のように起動して問題が発生した場合、

mvn dependency:go-offline

-DexcludeTransitive=true オプションを与えることで問題が解消するかもしれません。

mvn dependency:go-offline -DexcludeTransitive=true

また、Transitive Dependency の解決で問題を起こしている dependency を自分の pom.xml ファイルに追加することで問題を解消できるかもしれません。

私のプロジェクトでは、あるライブラリが間接的に Jakarta EE に依存していたために問題が発生しました。具体的には、io.swagger.parser.v3:swagger-parser が間接的に次の二つの Jakarta EE API を参照していました。

mvn dependency:tree 実行結果の一部
[INFO] +- io.swagger.parser.v3:swagger-parser:jar:2.1.26:compile
[INFO] |  +- io.swagger.parser.v3:swagger-parser-v2-converter:jar:2.1.26:compile
[INFO] |  |  +- io.swagger:swagger-core:jar:1.6.15:compile
[INFO] |  |  |  +- jakarta.xml.bind:jakarta.xml.bind-api:jar:4.0.0:compile
[INFO] |  |  |  +- org.apache.commons:commons-lang3:jar:3.17.0:compile
[INFO] |  |  |  \- io.swagger:swagger-models:jar:1.6.15:compile
[INFO] |  |  |     \- io.swagger:swagger-annotations:jar:1.6.15:compile
[INFO] |  |  +- io.swagger:swagger-parser:jar:1.0.73:compile
[INFO] |  |  |  \- io.swagger:swagger-parser-safe-url-resolver:jar:1.0.73:compile
[INFO] |  |  +- io.swagger:swagger-compat-spec-parser:jar:1.0.73:compile
[INFO] |  |  |  +- com.github.java-json-tools:json-schema-validator:jar:2.2.14:compile
[INFO] |  |  |  |  +- com.github.java-json-tools:jackson-coreutils-equivalence:jar:1.0:compile
[INFO] |  |  |  |  +- com.github.java-json-tools:json-schema-core:jar:1.2.14:compile
[INFO] |  |  |  |  |  +- com.github.java-json-tools:uri-template:jar:0.10:compile
[INFO] |  |  |  |  |  \- org.mozilla:rhino:jar:1.7.7.2:compile
[INFO] |  |  |  |  +- joda-time:joda-time:jar:2.10.5:compile
[INFO] |  |  |  |  +- com.googlecode.libphonenumber:libphonenumber:jar:8.11.1:compile
[INFO] |  |  |  |  \- net.sf.jopt-simple:jopt-simple:jar:5.0.4:compile
[INFO] |  |  |  +- com.github.java-json-tools:json-patch:jar:1.13:compile
[INFO] |  |  |  |  +- com.github.java-json-tools:msg-simple:jar:1.2:compile
[INFO] |  |  |  |  |  \- com.github.java-json-tools:btf:jar:1.3:compile
[INFO] |  |  |  |  \- com.github.java-json-tools:jackson-coreutils:jar:2.0:compile
[INFO] |  |  |  \- org.apache.httpcomponents:httpclient:jar:4.5.14:compile
[INFO] |  |  |     +- org.apache.httpcomponents:httpcore:jar:4.4.16:compile
[INFO] |  |  |     +- commons-logging:commons-logging:jar:1.2:compile
[INFO] |  |  |     \- commons-codec:commons-codec:jar:1.11:compile
[INFO] |  |  +- io.swagger.core.v3:swagger-models:jar:2.2.29:compile
[INFO] |  |  \- io.swagger.parser.v3:swagger-parser-core:jar:2.1.26:compile
[INFO] |  +- io.swagger.parser.v3:swagger-parser-v3:jar:2.1.26:compile
[INFO] |  |  +- io.swagger.core.v3:swagger-core:jar:2.2.29:compile
[INFO] |  |  |  +- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.18.2:compile
[INFO] |  |  |  +- io.swagger.core.v3:swagger-annotations:jar:2.2.29:compile
[INFO] |  |  |  \- jakarta.validation:jakarta.validation-api:jar:3.0.2:compile
[INFO] |  |  \- io.swagger.parser.v3:swagger-parser-safe-url-resolver:jar:2.1.26:compile
[INFO] |  +- org.yaml:snakeyaml:jar:2.4:compile
[INFO] |  \- commons-io:commons-io:jar:2.18.0:compile

この問題は、自分のプロジェクトの pom.xml に次の dependency 群を追加することで解消できました。

<!-- Jakarta (Bean) Validation -->
<dependency>
    <groupId>jakarta.validation</groupId>
    <artifactId>jakarta.validation-api</artifactId>
    <scope>provided</scope>
</dependency>

<!-- Jakarta XML Binding -->
<dependency>
    <groupId>jakarta.xml.bind</groupId>
    <artifactId>jakarta.xml.bind-api</artifactId>
    <scope>provided</scope>
</dependency>

ちなみに、Jakarta EE の BOM によりバージョン番号群が指定されているため、上記の dependency 群に <version> を含める必要はありませんでした。

<dependencyManagement>
    <dependencies>
        <!-- Jakarta EE -->
        <dependency>
            <groupId>jakarta.platform</groupId>
            <artifactId>jakarta.jakartaee-bom</artifactId>
            <version>${jakarta.jakartaee-bom.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>

        <!-- JUnit -->
        <dependency>
            <groupId>org.junit</groupId>
            <artifactId>junit-bom</artifactId>
            <version>${junit-bom.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

余談 (dependency:go-offline は完璧ではない)

dependency:go-offline は完璧ではない」ということを理解するまで、問題解消に手間取りました。

dependency:go-offline を実行しても解決しきれない dependency については、dependency:get で個別に取得する必要がありました。

dependency:go-offline のドキュメントを読む限りでは、<scope>test</scope> の dependency も解決されるはずなのですが、実際の動作は異なっていたので、次のように dependency:get を用いてテスト関連の dependency を取得することにしました。

Dockerfile の一部
RUN \
mvn -B -C -e dependency:go-offline -DexcludeTransitive=true && \
mvn -B -C -e dependency:get\
 -DgroupId=org.apache.maven.surefire\
 -DartifactId=surefire-junit-platform\
 -Dversion=3.5.3 && \
mvn -B -C -e dependency:get\
 -DgroupId=org.junit.jupiter\
 -DartifactId=junit-jupiter\
 -Dversion=5.13.1 && \
mvn -B -C -e dependency:get\
 -DgroupId=org.junit.platform\
 -DartifactId=junit-platform-launcher\
 -Dversion=1.13.1

これで dependency が全て解決されたので、verify 実行時に -o (--offline) オプションをつけることができるようになりました。

-o (--offline) オプションをつけて mvn verify を実行
RUN mvn -B -C -e -o -Dmaven.javadoc.skip=true verify
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?