The plugin goals deploy, undeploy, and redeploy can be used to deploy, redeploy and undeploy applications to a WildFly. The first step is to add the appropriate configuration to your plugin configuration in the POM.
<project> ... <build> ... <plugins> ... <plugin> <groupId>org.wildfly.plugins</groupId> <artifactId>wildfly-maven-plugin</artifactId> <version>2.1.0.Beta1</version> </plugin> ... </plugins> ... </build> ... </project>
The file listed under the filename parameter can be deployed to the server using the deploy goal.
mvn wildfly:deploy
The file can later be redeployed or undeployed using the appropriate goals.
mvn wildfly:redeploy mvn wildfly: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.wildfly.plugins</groupId> <artifactId>wildfly-maven-plugin</artifactId> <version>2.1.0.Beta1</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.wildfly.plugins</groupId> <artifactId>wildfly-maven-plugin</artifactId> <version>2.1.0.Beta1</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.wildfly.plugins</groupId> <artifactId>wildfly-maven-plugin</artifactId> <version>2.1.0.Beta1</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 server-groups property as well as specify at least one server group.
<project> ... <build> ... <plugins> ... <plugin> <groupId>org.wildfly.plugins</groupId> <artifactId>wildfly-maven-plugin</artifactId> <version>2.1.0.Beta1</version> <configuration> <server-groups> <server-group>main-server-group</server-group> </server-groups> </configuration> </plugin> ... </plugins> ... </build> ... </project>