解決されたバージョンの確認

依存定義を書き換えても、ほかの定義や推移的依存の都合で、実際には別のバージョンが使われることがあります。実際に解決されたバージョンを確かめます。

コンパイルする

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 以外の形で残っていない)
  • 関連モジュールが同じ系列にそろっている
  • 差分に、意図しない別のライブラリのバージョンの変化が無い(あれば、その理由を確かめる)

共通手順書の章

  1. 作業の全体像
  2. 開発環境と前提
  3. 作業前の準備
  4. 更新前の記録
  5. 利用箇所の調べ方
  6. 依存定義の更新
  7. IDE への反映
  8. 解決されたバージョンの確認
  9. コンパイルエラーの切り分け
  10. import の一括置き換え(javax → jakarta)
  11. 非推奨の警告の扱い
  12. 概算工数の出し方
  13. リソースの解放と入力の安全性
  14. ビルド・テスト・WAR の確認
  15. 他の JAR に同梱された複製
  16. 再スキャン
  17. 変更差分の確認と完了条件
  18. ロールバックと作業記録
  19. 検証環境等への配備