properties

usePrivateRepository

public boolean usePrivateRepository

If true, the build will use its own local Maven repository
via "-Dmaven.repo.local=...".

This would consume additional disk space, but provides isolation with other builds on the same machine,
such as mixing SNAPSHOTS. Maven also doesn't try to coordinate the concurrent access to Maven repositories
from multiple Maven process, so this helps there too.
Identical to logic used in maven-plugin.

perform

Runs the step over the given build and reports the progress to the listener.

A plugin can contribute the action object to Actionable.getActions()
so that a 'report' becomes a part of the persisted data of Build.
This is how JUnit plugin attaches the test report to a build page, for example.

IOException - If the implementation wants to abort the processing when an IOException
happens, it can simply propagate the exception to the caller. This will cause
the build to fail, with the default error message.
Implementations are encouraged to catch IOException on its own to
provide a better error message, if it can do so, so that users have better
understanding on why it failed.

InterruptedException - If the build is interrupted by the user (in an attempt to abort the build.)
Normally the BuildStep implementations may simply forward the exception
it got from its lower-level functions.

getDescriptor

Descriptor is a singleton for every concrete Describable
implementation, so if a.getClass() == b.getClass() then by default
a.getDescriptor() == b.getDescriptor() as well.
(In rare cases a single implementation class may be used for instances with distinct descriptors.)