The plugin goals deploy, undeploy, and redeploy can be used to deploy, undeploy and redeploy applications to a JBoss Application Server. The first step is to add the appropriate configuration to your plugin configuration in the POM.
<project> ... <build> ... <plugins> ... <plugin> <groupId>org.jboss.as.plugins</groupId> <artifactId>jboss-as-maven-plugin</artifactId> <version>7.9.Final</version> </plugin> ... </plugins> ... </build> ... </project>
The file listed under the filename parameter can be deployed to the server using the deploy goal.
mvn jboss-as:deploy
The file can later be redeployed or undeployed using the appropriate goals.
mvn jboss-as:redeploy mvn jboss-as:undeploy
You can also set the deployment operation to execute at a specific phase, for example the install phase.
<project> ... <build> ... <plugins> ... <plugin> <groupId>org.jboss.as.plugins</groupId> <artifactId>jboss-as-maven-plugin</artifactId> <version>7.9.Final</version> <executions> <execution> <phase>install</phase> <goals> <goal>deploy</goal> </goals> </execution> </executions> </plugin> ... </plugins> ... </build> ... </project>
It is also possible to deploy other artifacts that are not related to your deployment, e.g. database drivers:
<project> ... <build> ... <plugins> ... <plugin> <groupId>org.jboss.as.plugins</groupId> <artifactId>jboss-as-maven-plugin</artifactId> <version>7.9.Final</version> <executions> <execution> <phase>install</phase> <goals> <goal>deploy-artifact</goal> </goals> <configuration> <groupId>postgresql</groupId> <artifactId>postgresql</artifactId> <name>postgresql.jar</name> </configuration> </execution> </executions> </plugin> ... </plugins> ... </build> ... </project>
The artifact must be already listed as a dependency in the projects pom.xml.
You are allowed to perform undeployments based on a regex-pattern. This is useful as soon as you use a version identifier within your deployment name. An existing deployment is matched by regex and replaced by the new one. This example below will undeploy the deployment starting with "postgres-".
<project> ... <build> ... <plugins> ... <plugin> <groupId>org.jboss.as.plugins</groupId> <artifactId>jboss-as-maven-plugin</artifactId> <version>7.9.Final</version> <executions> <execution> <phase>clean</phase> <goals> <goal>undeploy-artifact</goal> </goals> <configuration> <groupId>postgresql</groupId> <artifactId>postgresql</artifactId> <version>2.1.0</version> <type>jar</type> <name>postgresql-2.1.0.jar</name> <match-pattern>postgresql-.*</match-pattern> </configuration> </execution> </executions> </plugin> ... </plugins> ... </build> ... </project>
In case multiple deployments match the specified pattern you can decide, how the plugin should behave. You have following options:
Deploying in domain mode works the same as the examples above, except you need to add the domain tag as well as specify at least one server group.
<project> ... <build> ... <plugins> ... <plugin> <groupId>org.jboss.as.plugins</groupId> <artifactId>jboss-as-maven-plugin</artifactId> <version>7.9.Final</version> <configuration> <domain> <server-groups> <server-group>main-server-group</server-group> </server-groups> </domain> </configuration> </plugin> ... </plugins> ... </build> ... </project>
JBoss AS allows content to be disabled or enabled via the management interface. The default deployment goals above will automatically enable the content, which may not be desirable. To avoid this, change the deployEnabled parameter.
<project> ... <build> ... <plugins> ... <plugin> <groupId>org.jboss.as.plugins</groupId> <artifactId>jboss-as-maven-plugin</artifactId> <version>7.9.Final</version> <executions> <execution> <phase>install</phase> <goals> <goal>deploy</goal> </goals> <configuration> <deployEnabled>false</deployEnabled> <configuration> </execution> </executions> </plugin> ... </plugins> ... </build> ... </project>