Prior to the pipeline/Jenkinsfile modus operandi, I would have done the following:
1. Created Jenkins "Maven project" jobs for each separate project, with triggers/hooks set to build them when changes are found.
2. Used the builtin triggers to "Build whenever a dependency changes" to handle the build chaining.
However, I haven't found any analogue for those builtin triggers in the pipeline world. Instead, I just add a manual trigger to my downstream jobs in the upstream Jenkinsfiles. Something like the following:
// ... actual build, above
stage 'Trigger Downstream'
build job: '../some-downstream-project/master', wait: false
Perhaps someone else here has a better suggestion, but that's my current SOP.