The original idea of toolchains was to have the same tool being used by different plugins within the same project.
This seems like a good approach, but there are several cases where you want more control over the tool to choose, for instance:
- the maven-compiler-plugin should use the lowest (preferably matching) jdk version to ensure proper bytecode for the classes
- the maven-surefire-plugin might need a higher version due to requirements of the testing frameworks
- some code-generators require a more recent JDK compared to the code they're actually producing.
- the look-and-feel of javadoc has changed per JDK. If you like the latest, you should be able to use it.
- In case of the maven-invoker-plugin you should be able to test all combinations of JDK and Maven as runtime environment.