You are my true hero today! Many thanks.
All it took to have a unified analysis was indeed to add this property to the POM file of portal-frontend: <sonar.sources>app</sonar.sources>.
I took this opportunity to also add <sonar.skip>true</sonar.skip> as a property of those modules that do not contain source code (e.g. packaging modules), so that things would be more sensible.