I have a large Java application that somes in several OSGI bundles. It also includes plugins.
I want to create multiple distributions of the application with different selections each time. In some cases the distributions also include installers, PDF manual, Javadoc files and other non related code.
Is there a tool that will get as source
- Jars from a Maven repo
- Property files to be replaced on the jars
- Other files (pdf files)
- Installers (native executables)
and create one big zip package of these?
As an example you can think that my example application is photoshop and I want to create distributions of "photoshop free", "photoshop lite" and "photoshop ultimate" each time with a bit different jar files.
So far I have looked at
- Maven, Gradle These compile code. I already have the code as binaries.
- Cfengine, Chef,puppet. These are geared toward server preparations. My application is standalone and the final result should be a zip file and not a server
- Lzpack and friends. I have already an installer. It should be packaged in the same ZIP file as everything else.
Any other ideas? My application is about 100 OSGI files and I need different combinations of those for each release.
Happy to provide any more details.
At the moment I am using Maven (and the assembly plugin) but the code is too complicated and full of hacks.
For example there is an OSGI jar that contains a property file (EJB descriptor) that changes according to the installation type. This means that Maven needs to open the jar archive and tamper with the property file at the end of the build. I accomplished this after a lot of hacks as I didn't find a Maven plugin that opens an existing jar file, makes changes and then re-compress it.
The installation file is also created according the operating system where the application will be installed.
In summary I think that Maven is too restrictive for things that are not Java source code. If there is a Maven plugin that I am missing, please say so.