I’m aware that this is a rather broad search for ideas, not an isolated, concrete question that can be quickly answered with a simple do this or that.
I have a multi-project build that produces a set of (related) products (client application, server installation package, additional tools and modules). Each product comes in multiple, varying distributions, e.g. * platform independent zip * Linux tar ball with bundled JRE * Windows installer * Mac application bundle * Java Webstart client web application
The different distributions of one product have, of course, largely the same content, but not always the same directory layout. I built a gradle plugin to define these distributions in a (more or less) declarative way, based on nested 'CopySpec’s.
My task now is to build a variation of this product set that is branded for one customer. The branding changes * images and texts in the distributions * icons and property files that are classpath resources, packed in jar files * archive / installer file names and (contained) base directories
I’m looking now for any ideas how to implement such a branding (ideally in a way so that other brandings could follow) in that gradle build, so that the existing distribution definitions (which are unfortunately rather large and complex) can be reused as much as possible. We have this implemented in ant, by unpacking jars and distributions and replacing single files, but the whole ant build, and esp. this part, is so confusing and error prone that I# seeking for a better approach to handle this.
If there’s any detail I should share here to make it easier to answer, please tell me.