Gradle の dependency locking について
昔の gradle には dependency locking 機能がなかった。ビルドするタイミングによって、別の依存モジュールが利用されたりしていた。。 最近、gradle に dependency locking 機能がついたので試してみた。 carton.lock とか package-lock.json とか、そういうのと同じようなことができるようになる。 同じレポジトリからビルドしたら同じ jar が生成されるようになる。便利。
dependency locking を利用すると gradle.lockfile というファイルが生成される。
デフォルトだとフェーズ単位でファイルが生成されるから enableFeaturePreview('ONE_LOCKFILE_PER_PROJECT')
を settings.gradle に書いて1ファイルにまとめるようにしたほうが良い。gradle 7.0 ではこの方式がデフォルトになる予定なので、最初からこの feature flag は enabled にしたほうが良いです。管理上も、そのほうが便利。
./gradlew dependencies --write-locks
ってするとロックファイルが書かれる./gradlew classes --update-locks org.apache.commons:commons-lang3,org.slf4j:slf4j-api
とかで特定のモジュールだけアップデートできる
たぶんもう普通に使えるけど、まだ開発途中って感じはする。./gradlew dependencies
してもサブプロジェクトのぶんを一括で作れない、とか。。
↓実際に line-bot-sdk-java を利用して試しに生成してみたやつがこれ。 https://github.com/tokuhirom/line-bot-sdk-java/commit/08a53ed86eedcf1072e7c12e77d7e1777f54c933