Support self-assignment of Github release issues. Added Apache httpclient to support HTTP PATCH as Java's HttpUrlConnection does not accept PATCH as HTTP method.
Introduced value objects to properly abstract command line arguments and introduced an interface Masked that allows masking a String value when printed to the console.
Introduced an overload for GitOperations.checkout(…) to allow to define whether a branch about to be created is supposed to be updated right away. The already existing method keeps the old behavior (immediate update) while the maintenance branch creation forces a create only as by definition a branch about to be created is not going to be available in the remote repo.
Renamed workspace purge artifacts to build purge artifacts as it requires knowledge about the build, not only the workspace. Some JavaDoc and assertions. Moved logging of workspace cleanup from operations to Workspace. Re-enabled workspace command as @CliComponent was missing on the class.
Project has a withFullName(…) to be able to define it manually. Projects makes use of that to explicitly define the name for Apache backed ones.
Introduced a skipTests property to make explicit, which projects should not have their test run during a build.
Introduced overloads to allow the optional lookup of a Project by name.
Train has now a method withAlwaysUseBranch(…) to define that milestone releases are supposed to be build from a branch, too.
Introduced Kay release train using that new flag and setting up a customized Iteration chain including a second milestone.
Updating versions back to development ones is now contained in the conclude step. GitOperations does less pulls now to make sure we don't accidentally drop local commits. The step to create maintenance branches now uses the module version explicitly to create a branch with the right name.
Introduced customized execution strategy that makes methods on command classes accessible before executing them. This allows to make command classes package protected.
Introduced TimedCommand base class to output the time a command execution takes.
As the Artifactory Maven plugin currently doesn't deploy GPG signatures we need to separate the release build into two iterations. The first one is building the artifacts and promoting them to Artifactory. The second one signs the artifacts and uploads them to Maven Central in case we release a public version (GA or service release).
Refactored issue tracker implementation into dedicated packages. Removed package tangles by moving some types around. Extracted GitHub specific properties into its own properties type reusing the Git credentials as we're talking to GitHub anyway.
Added Jackson parameter name module and enabled Java 8 parameter names to be able to get rid of the manually declared constructors for payload classes. Turned them into value objects where possible.
Original pull request: #14.