Specialized job types such as are defined in async-job-plugin, branch-api-plugin, or external-monitor-job-plugin do not extend AbstractProject / AbstractBuild because these classes make very specific assumptions about build semantics: that you have a CI job (SCM), an assigned workspace, and so on. Yet without extending those classes you currently have a hard time picking up generic features like
- parameter definitions
- trigger definitions
- manual or REST build causes
- lazy-loading of runs
Those features should be decoupled so that they are available à la carte for other Job / Run types.