It's astonishing how many people see that both build tool config (e.g. pom.xml) and module declaration (module-info.java) list dependencies and then jump to the conclusion that one should be continuously generated from the other. This is a bad idea for a few reasons. 🧵
1. Build tool config and module declaration contain lots of information that the other couldn't care less about (e.g. module exports and services are meaningless to build tools). So to generate, you need to put a lot of information in a place, where it's useless.
2. The reason for that is that build tools and module system serve *very* different purposes. Tasking one with generating the config for the other is a superb example for coupling mostly unrelated responsibilities. We know where that leads.
3. Letting build tools generate declarations isn't as trivial as it sounds (sitepoint.com/maven-cannot-g…). It would also need to be reimplemented by every build tool and IDE/build tool integration (or do you want to run our build tool, every time you add an `exports`?).
4. Speaking of IDEs, to get IDE support for editing module declarations, they would have to understand what part of each build tools' config contains the modules part. More effort duplicated across different projects.