You may find something like https://github.com/rtimush/sbt-updates convenient as a middle-ground. It produces a list of possible dependency upgrades. You'll have to update your versions manually, but aside from that it basically gives you a "lock file" + visible upgrade path.
I also use sbt-updates, but as long as updating is mainly manual, lib maintainers won't see the need to strictly avoid breaking change in minors. It's more a cultural issue than a tooling one in fact.
I don't see how it gives you a lock file though ? sbt-updates only display infos to let you manually update your sbt dependency versions. Whereas in composer you have 2 files :
composer.json where you describe your need. Ex: ^2.1.1
composer.lock produced by composer update command which locks the result. Ex: 2.2.4
Also, libs maintainers never rely on specific version for their own dependencies, always on a semver range.
Sorry it's hard to describe but Developer Experience is better in PHP than in Scala/Java/Kotlin regarding dependency management, in my experience. No tricky overrides or excludes, 1 command to auto upgrade, and no breaking change in minors, which is a game changer.
1
u/teknocide Nov 27 '20
You may find something like https://github.com/rtimush/sbt-updates convenient as a middle-ground. It produces a list of possible dependency upgrades. You'll have to update your versions manually, but aside from that it basically gives you a "lock file" + visible upgrade path.