Wednesday, November 5, 2014

Using the new Maven Wildfly Extension plugin to deploy module extensions

Libor is putting together a nice maven plugin to help you deploy your custom Wildfly module extensions to an existing Wildfly or EAP installation.

I decided to integrate it with my rhq-msg-broker-wf-extension project (I talked about my prototype of the rhq-msg work here). What this now allows us to do is deploy a message broker directly in an existing Wildfly or EAP installation via a simple mvn command line.

I won't repeat all of Libor's instructions - just go to his blog I linked above for the full details of how to integrate his mvn plugin in your mvn project - but in short all I had to do was create a snippet of .xml which includes the configuration I want to deploy in the Wildfly or EAP instance's standalone.xml (which includes the subsystem and the socket-binding) and then in the pom just define some settings for the plugin to let it know where to put my extension code and that XML configuration.

In the pom.xml, I have this to define the mvn plugin configuration - notice I allow the user to tell us where the app server is installed via a system property "org.rhq.msg.broker.wildfly.home":

        <plugin>
            <groupId>org.jboss.plugins</groupId>
            <artifactId>wildfly-extension-maven-plugin</artifactId>
            <configuration>
                <moduleZip>${project.build.directory}/${project.build.finalName}-module.zip</moduleZip>
                <jbossHome>${org.rhq.msg.broker.wildfly.home}</jbossHome>
                <modulesHome>modules/system/layers/base</modulesHome>
                <serverConfig>standalone/configuration/standalone.xml</serverConfig>
                <subsystem>${basedir}/src/main/scripts/standalone-subsystem.xml</subsystem>
                <profiles>
                    <profile>default</profile>
                </profiles>
                <socketBinding>${basedir}/src/main/scripts/socket-binding.xml</socketBinding>
                <socketBindingGroups>
                    <socketBindingGroup>standard-sockets</socketBindingGroup>
                </socketBindingGroups>
            </configuration>
        </plugin>

To publish the rhq-msg-broker-wf-extension custom module extension to an already-installed EAP instance, simply run this command (this sets the system property to point to a EAP install directory, and it uses the goal "wildfly-extension:deploy" which tells the mvn plugin to deploy the extension to that EAP installation):

mvn -Dorg.rhq.msg.broker.wildfly.home=/opt/jboss-eap-6.3 wildfly-extension:deploy

At this point, the standalone.xml will have been modified to include the custom module extension's subsystem configuration and the module code will have been copied to the EAP modules directory. At this point, once the app server is started, the module extension will be deployed and running.

No comments:

Post a Comment