This page describes proposed JEMS installer re-factoring which can be done along with Maven migration.
Forum thread at http://www.jboss.com/index.html?module=bb&op=viewtopic&t=90250
Goals
Standartize process of adding new products and components to the installer.
Split installer into a significant number of small components (let's call 'em "installer modules") to simplify maintenance.
Utilize maven to build the installer.
Eliminate installer's dependency on canonical AS distro.
Installer refactoring should not depend on full mavenization of all products included (since Maven migration will take relatively long time).
Installer build performance should not degrade dramatically.
Design
Installer module artifacts will be separate components in the M2 repository.
File packs are logical installer components which map to installer artifacts. I.e. web-console, bsh-deployer, jboss-remoting, etc
Installer module artifact includes the following:
pom.xml (with dependencies on appropriate product components)
JAR with resources:
Installer module descriptors (component-install-template.xml, userInputSpec.xml, etc). component-install.xml is generated during the installer build from the template using the data from POM.
Velocity templates for config file customization
Custom user input panels (java classes)
Custom action listeners (java classes)
Language packs
Ant scripts used by custom ant actions
Installer modules will have their own versioning. See below for details.
JEMS Installer build merges all the installer descriptors from all modules and then executes izpack compiler to build installer jar.
Custom Maven2 plug-in can be implemented
<pack name="web-console" installGroups="default,all" group="JMX" required="no"> <description>An applet console for the JMX server</description> <fileset dir="@{jboss.dist}/server" targetdir="$INSTALL_PATH/server/$SERVER_CONFIG"> <include name="deploy/management/console-mgr.sar/**"></include> <include name="deploy/monitoring-service.xml"></include> <include name="lib/jboss-monitoring.jar"></include> <additionaldata key="web.xml" value="web-console.war/WEB-INF/web.xml.vm"></additionaldata> <additionaldata key="jboss-web.xml" value="web-console.war/WEB-INF/jboss-web.xml.vm"></additionaldata> </fileset> <depends packname="jmx-invoker-service"></depends> <depends packname="war-deployer"></depends> <depends packname="bsh-deployer"></depends> <depends packname="jsr77-service"></depends> <depends packname="jboss-aop-deployer"></depends> </pack>
Installer module packaging and versioning
It's proposed to have standalone components for the installer modules with their own versioning. The reason is that installer module should not normally be changed every time a new component release is done. So installer module will normally be compatible with multiple component versions.
Plan
Prototype: Standalone JBoss Messaging profile could be implemented since Messaging is already being mavenized.
Prototype: Generate dependencies between file packs based on dependencies in component pom's
Mavenize installer build.
Support for both Maven2 repo and JBossBuild repo (for transitioning while projects are being mavenized).
Generate dependencies between file packs based on dependencies in component pom's & component-info.xml's.
Documentation on how to add a new component to the installer
TODO
handling standalone vs embedded into AS install (hibernate, jbpm)
handling clustered install
what can be obtained from the pom: dependencies, license info.
Concerns
Configuration panels which apply to multiple packs. Panels could be product level.
Comments