1. Use maven.
2. If you use spring, use spring boot parent, you don't really need to read the rest.
3. By default maven uses ancient plugin versions (for reasons I don't understand). So you have to define every single plugin you're using with latest version, including standard ones like maven-compiler-plugin.
4. Do not specify versions in <version> tag. Use properties for every single dependency and plugin.
5. Use "versions" maven plugin, it supports properties.
6. Learn maven, it's tiny. Learn about <dependencyManagement>, <pluginManagement> tags.
7. Do not use multi-project mono-repo setups.
8. If you really want to use multi-project setup, use Gradle. It sucks, but maven multi project configuration is hardly usable.