I am very aware of package managers and versioning software. But while I have read docs and books on these subjects, my practical experience is very limited. So I apologize if the question itself doesn't make sense.
Maintaining a self-contained package vs versioning an application are both clear to me. However, what I wish to make is a 'base' application that colleagues can later copy, customize, and then check in as a new application, maintaining the ability to pull updates from the base application when updated.
It is my theoretical understanding that this can be done using branching, but it feels abusive, as the new applications are stand-alone and not really branches that are ever going to be merged. On the other hand, while it seems fair to me to make the application into a package of sub-packages, I have never seen java code being shared this way, and breaking the application into a package of front-end files and a group of JAR files feels all over the place.
You should divide your problem smaller problems ( divide et impera ), in particular try to understand MVC ( Model View Controller ) pattern ( see here https://it.wikipedia.org/wiki/Model-view-controller )
What you can do with this parttern ? You can:
Now, seems really abstract, but it's simple and you can do it as the following:
Doing so you can:
Problems: