Issues with current package/distribution build approach
- Duplication of functionality between distributions and packager/distributions-ips modules; adding new content into distribution requires update of at least two pom files
- Inconsistence between the content produced by developer's build and official IPS enabled distribution
Unification proposal
- Keep current distributions/external module.
- Keep most of current distributions/nucleus-base module until scripts and other files are ready to be moved to appropriate modules and packaged as distribution fragments. Remove default domain configuration assembly from nucleus-base and rely on build-time execution of 'asadmin create-domain' instead.
- Use packager module to produce individual packages: in default profile, final package artifact will be zip archive, in ips profile it will produce both the zip archive and publish IPS package to repository. This functionality is already in place, but packager will require some more work to improve usability, namely:
- Streamline ant plugin processing of staged package content - right now, very similar processing is duplicated in most packages and it should be implemented as generic ant target.
- Streamline dependency graph delta calculation using generic ant macro.
- Remove dependency graph imaging which was originally used for debugging.
- Add "dummy" package modules for content which is integrated using external IPS packages (MQ, pkg-java)- these modules will produce only zip archives, not IPS packages.
- Use distributions-ips (which could be renamed to distributions) module to assemble sets of package module artifacts into distributions (nucleus?, web, full). In default profile, distribution assembly will consist of unzipping all the package artifacts required for particular distribution and running 'asadmin create-domain' to get the default domain config. In ips profile, distribution assembly will consist of installing IPS packages plus the domain creation. Most of this is already implemented in distributions-ips module.
- Since the file layout of developer distribution will now be identical to the file layout of IPS enabled distribution without IPS baseline metadata, glassfish maven plugin will require changes to accomodate extra top level installation directory when looking for GF jar files.
- Add packager and distributions-ips modules to top level module list for all profiles
Potential issues
- Need to review number and content of distributions - do we need nucleus, for instance?
- There will be some build performance impact due to dependency graph calculations in packager which are CPU intensive.
- Several packages are still pending - web beans, JCA management, EJB management.
- Adding content to packager will be more complex than adding content to distributions since it is more fine-grained and it may not be obvious which package module requires change, or even if the new package is required.
- With Kedar's pending changes we'll need to run separate 'asadmin create-domain' commands for web and full profiles and this process is also expected to be rather resource-heavy.
- Is it necessary to also add installer module to default build sequence? Installer relies on IPS enabled zip image as its payload and will not be fully functional with non-IPS zip file.
|