Centralized dependency management¶
We manage all our shared project dependencies in Idofront. It also includes Kotlin version, Minecraft server version, and versions for other gradle plugins. This lets us quickly update our plugins just by changing the Idofront version in
To update versions everywhere, or add a new dependency that may be useful to other plugins, change the
libs.versions.toml file in Idofront.
To add the dependency to our shared platform, also add it in idofront-catalog-shaded. We don't include all dependencies automatically since some are meant to be shaded into each plugin, or have separate api and implementation dependencies.
Certain plugins shade their own dependencies (ex. guiy adds jetpack compose), but we generally discourage this unless a plugin will likely be used outside of Mine in Abyss.
Finding all outdated dependencies in Idofront¶
gradle dependencyUpdates to get a list of outdated dependencies (this task comes from a gradle plugin we use in Idofront.)
Compose Multiplatform is usually the biggest blocker for updating Kotlin version. You may mitigate this by changing the compiler version used by compose, but this can be buggy and generally it's better to wait for it to update.
We've had many problems in the past with updating too much too fast. Aim for quarterly breaking version changes (this goes for both external and internal dependencies.) This practice should minimize how often we need to go through every repo and make changes to get some new feature live on the server.