When I execute gradle jar at the top level of a multiproject, I expect the resulting artifacts to include the classes from child projects. By default, Gradle does the dumb thing, only including classes from the top-level project.
I wouldn’t agree that it is dumb. Even ignoring that not all projects are JVM based, assume I have 5 subprojects, 3 of them libraries and 2 of them applications, a jar that bundles all of them would be fairly useless.
Another use case is when some of the artifacts are alternative incompatible implementations of the same interface that are bundled in different configurations to produce multiple versions of the product.
The current way is what most of the people expect. What you are looking for can be trivially accomplished by a plugin, but it doesn’t make sense as a default behavior.
If you’re expecting a single jar then I would suggest that you actually don’t want a multi-project build and instead should be using a single project with multiple configurations.