maven のバージョンチェック処理の振る舞い
23時に寝て1時に起きてまた寝て6時半に起きた。変なライフサイクルになってきた。
maven のアップデートポリシー⌗
maven が依存解決するとき、例えばバージョンの範囲を指定して最新バージョンを取得するといった設定ができる。実行していると、新しいバージョンをチェックしにいくときとそうじゃないときがあって、どういう仕組みで動いているのかよくわからなかったのでデバッグした。言うても DEBUG ログを出力させて、ログの内容をソースで grep しながら関連するところを読んだだけ。
DefaultUpdateCheckManager.isUpdateRequired の中でポリシーが最終チェック日付を確認していいる。ここから辿っていくと ArtifactRepositoryPolicy という仕組みがある。
return ( lastCheckDate == null ) || policy.checkOutOfDate( lastCheckDate );
ドキュメントでそれっぽい内容を調べると updatePolicy
を設定できるようになっている。デフォルトは daily
なので日次でチェックしにいくような振る舞いをする。バージョンチェックするときとしないときの何が違うのか、よくわかっていなかった振る舞いを理解できた。これはビルドキャッシュの有無に関係ないのでキャッシュがあるからバージョンチェック処理をスキップできるわけではない。もちろん、更新をチェックさせたくないのであれば never
に設定してもいいのかもしれない。
updatePolicy
The frequency for downloading updates - can be “always”, “daily” (default), “interval:XXX” (in minutes) or “never” (only if it doesn’t exist locally).
https://maven.apache.org/ref/3.6.3/maven-settings/settings.html