Source Code Customization
This is roughly the process that we currently use to create a customized midPoint code:
We "fork" complete midPoint source code into a new repository (either on github or in private repository with git pull/push).
We try to keep all custom code is the components that are under the "custom" subdirectory.
This subdirectory is currently mostly empty, it just has some placeholder pom.xml.
So you can create a new component custom/my-extensions-impl and place the extension code there.
Set up the component pom.xml and the custom/pom.xml and the custom component will be built into midPoint.
As all the code is in the
custom/* part of the source code and we usually do not modify this in the master branch then it is safe to merge from master to your repository.
Merge conflicts are unlikely.
Alternatively, you can reuse the final product and add more code to it using overlay mechanism.