解決されたバージョンの確認
依存定義を書き換えても、ほかの定義や推移的依存の都合で、実際には別のバージョンが使われることがあります。実際に解決されたバージョンを確かめます。
コンパイルする
Maven
mvn clean compile 2>&1 | ForEach-Object { "$_" } | Out-File -Encoding utf8 compile-after.txt
社内のリポジトリに登録した直後など、リモートを確かめ直す必要があるときだけ -U を付けます。
Gradle
./gradlew clean compileJava 2>&1 | ForEach-Object { "$_" } | Out-File -Encoding utf8 compile-after.txt
解決されたバージョンを確かめる
Maven
mvn dependency:tree "-Dverbose" "-Dincludes=<groupId>:*" 2>&1 | ForEach-Object { "$_" } | Out-File -Encoding utf8 dependency-tree-after-target.txt
mvn dependency:tree "-Dverbose" 2>&1 | ForEach-Object { "$_" } | Out-File -Encoding utf8 dependency-tree-after-all.txt
Gradle
./gradlew -q dependencyInsight --dependency "<groupId>:<artifactId>" --configuration runtimeClasspath 2>&1 | ForEach-Object { "$_" } | Out-File -Encoding utf8 dependency-insight-after.txt
./gradlew -q --console=plain dependencies --configuration runtimeClasspath 2>&1 | ForEach-Object { "$_" } | Out-File -Encoding utf8 dependency-tree-after-all.txt
更新前と比べる
Maven・Gradle のどちらも、次で更新前と更新後の依存ツリーを比べます。
Compare-Object (Get-Content dependency-tree-before-all.txt) (Get-Content dependency-tree-after-all.txt) | ForEach-Object { $_.SideIndicator + " " + $_.InputObject } | Out-File -Encoding utf8 dependency-tree-diff.txt
dependency-tree-diff.txt の <= は更新前だけにある行、=> は更新後だけにある行です。実行した日時の行(Maven の Finished at: など)も差分に出ますが、無視してかまいません。(PowerShell で fc と書くと別のコマンドになるため、比べるのには Compare-Object を使います)
確かめること
- 対象のライブラリが更新先のバージョンに統一されている(古いバージョンが
omitted for conflict以外の形で残っていない) - 関連モジュールが同じ系列にそろっている
- 差分に、意図しない別のライブラリのバージョンの変化が無い(あれば、その理由を確かめる)