Another focus was it, to keep SBuild magic free (tm) and the user in full control.
Thus, no plugin will automatically extend or modify your project (besides the classpath).
To use some plugins functionality, you have to explicitly activate it.
At any point in your SBuild buildfile you can activate and configure a plugin.
Based on that configuration, the plugin will contribute additional functionality to your project, which contains most likely a new Target or a SchemeHandler.
E.g. a Java compiler plugin might provide a target that compiles your Java source files whereas a Aether plugin would add a SchemeHandler
that is able to resolve transitive dependencies through the Eclipse Aether (aka Maven) library.
For more flexibility each plugin can have multiple instances which are named.
In most cases you will not need this feature and you simple can leave the name out (the plugin instance will become the name ""
).
This feature should support scenarios like using the same compile plugin to compile main and test classes,
or use the same test runner plugin to run unit tests and integration tests.
As the plugin instances are aware of their given name, some good defaults could be derived from that name.
E.g. a compiler plugin instance with the name "test" could automatically adjust the target name and input and output directories.