9/20/2012

JBoss AS7 Ant Tasks for Deploy and Undeploy

I want to use ant to control deploy and undeploy apps to JBoss AS 7 in a simple test. I know I could just have ant copy the WAR, jar, or EAR files to $JBOSS_HOME/standalone/deployments directory, but then I will have to wait till the app is fully initialized before accessing it. So I decided to write some simple ant targets using JBoss AS7 CLI commands.

<?xml version="1.0"?>
<project name="test" default="build" basedir=".">
    <property environment="env"/>
    <property name="jboss.home" value="${env.JBOSS_HOME}" />
    <property name="app.name" value="test.war" />
    <property name="app.path" value="${app.name}" />

    <presetdef name="jboss-cli">
      <java jar="${jboss.home}/jboss-modules.jar" fork="true" >
        <arg line="-mp ${jboss.home}/modules org.jboss.as.cli -c" />
      </java>
    </presetdef>

    <target name="deploy">
      <jboss-cli failonerror="true">
        <arg line="'deploy --force ${app.path}'" />
      </jboss-cli>
    </target>

    <target name="undeploy">
      <jboss-cli failonerror="true">
        <arg line="'undeploy ${app.name}'" />
      </jboss-cli>
    </target>

    <target name="restart">
      <jboss-cli failonerror="true">
        <arg line="':shutdown(restart=true)'" />
      </jboss-cli>
    </target>
</project>
The above deploy and undeploy is equivalent to the following jboss-cli commands:
jboss-cli.sh -c "deploy --force test.war"
jboss-cli.sh -c "undeploy test.war"