- Java/Mavenプロジェクト開発の際に、pom.xmlファイルから依存ライブラリの一覧をcsv形式で取得したかった。
- 取得用のPythonスクリプトを作成したため、メモとして残しておく。
事前準備
- ライブラリインストール
pip3 install lxml
- テスト用
pom.xml
準備
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example.test</groupId>
<artifactId>test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>test</name>
<dependencies>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.10</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.8</version>
</dependency>
</dependencies>
</project>
スクリプト
extract_dependencies_from_pom.py
from lxml import etree
def extractDependenciesFromPom():
# 出力ファイル
output = "./dependencies_from_pom.csv"
f = open(output, "w")
# 出力ファイルヘッダー 書き込み
header_string = "groupId,artifactId,version"+"\n"
f.write(header_string)
# pom.xml 読み込み
tree = etree.parse("./pom.xml")
root = tree.getroot()
dependencies = root.find('./{*}dependencies')
for dependency in dependencies:
# dependency内の各要素を取得
groupId = dependency.find('./{*}groupId').text
artifactId = dependency.find('./{*}artifactId').text
version = dependency.find('./{*}version').text
# CSV 書き込み
output_string = groupId \
+ "," + artifactId \
+ "," + version +"\n"
print(output_string)
f.write(output_string)
f.close
extractDependenciesFromPom()
動作確認
※extract_dependencies_from_pom.pyとpom.xmlを同一フォルダに配置する。
-
実行
python3 extract_dependencies_from_pom.py
-
出力結果
groupId,artifactId,version commons-codec,commons-codec,1.10 com.fasterxml.jackson.core,jackson-databind,2.9.8