15
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Java: Mavenプロジェクトの依存ライブラリを確認する(dependency:tree)

Last updated at Posted at 2021-12-13

Javaプロジェクトが利用しているライブラリは、どのように確認すればよいのでしょうか。

単純に直接依存しているライブラリを確認するだけでは不十分です。たとえば、ある依存ライブラリがさらに別のライブラリに依存しているという関係性(推移的依存)があるからです。ほかにも、単純にwarファイルを展開して含まれているjarの名称を確認するだけでは、fat jar(uber-jar) の存在をカバーすることができません。

誤った方法で確認してしまうと、調査漏れが発生してしまう危険性があります。このため、本記事では比較的容易かつ確実性の高い方法を紹介します。

前提

下記の両方を満たしていることが必要です。

  • 調査対象がMavenプロジェクトとして構成されていること
  • 作業端末において、Mavenにパスが通っていること (参考: WindowsへのMavenインストール)

具体的な手順

例として、Apache Solr Core 8.11.0の依存ライブラリを確認してみます。

2021-12-10, Apache Solr affected by Apache Log4J CVE-2021-44228 によると、Apache Solr releases prior to 8.11.1 were using a bundled version of the Apache Log4J library vulnerable to RCE. とのことです。このため、8.11.0には log4j 2.15 より前のバージョンが依存ライブラリに含まれているのではないかと思われます。

1. pomファイルの取得

pom(Project Object Model)ファイルとは、Mavenプロジェクトにおける設定を記述したファイルです。通常のMavenプロジェクトでは、pom.xmlというファイル名で利用されています。

今回は、Maven Repository: org.apache.solr » solr-core » 8.11.0 のFiles欄にあるpomファイルをダウンロードします。

2. ライブラリの依存ツリーを出力

pomファイルをダウンロードしたディレクトリに移動し、dependency:treeコマンドを実行します。

mvn -f solr-core-8.11.0.pom -DoutputFile=mvn_dependency_tree.txt dependency:tree

オプションの説明は下記の通りです。

オプション 説明
-f pomファイル名を指定します。指定しない場合は pom.xml が利用されます
-DoutputFile 出力先のファイル名を指定します。指定しない場合はコンソールに出力されます

3. 結果の確認

出力された mvn_dependency_tree.txt ファイルを確認します。

org.apache.solr:solr-core:jar:8.11.0
(中略)
+- org.apache.logging.log4j:log4j-core:jar:2.14.1:compile

これらの文字列は、コロン区切りで groupId:artifactId:packaging:version:goalを意味します。結果を対照させると、下記の表にまとめることができます。

Key 依存先モジュール
groupId org.apache.logging.log4j
artifactId log4j-core
packaging jar
version 2.14.1
goal compile

つまり、org.apache.logging.log4j:log4j-core:jar:2.14.1:compile という文字列からは、「プロジェクトをcompileするとき」に「org.apache.logging.log4jグループ」の「log4j-coreアーティファクト」の「jarでパッケージ化された」「バージョン2.14.1」に依存していることがわかります。

関連記事

15
8
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
15
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?