onlyMuleSources
Mule Maven Plugin
Standard Support for Mule 4.1 ended on November 2, 2020, and this version of Mule reached its End of Life on November 2, 2022, when Extended Support ended. Deployments of new applications to CloudHub that use this version of Mule are no longer allowed. Only in-place updates to applications are permitted. MuleSoft recommends that you upgrade to the latest version of Mule 4 that is in Standard Support so that your applications run with the latest fixes and security enhancements. |
The Mule Maven plugin enables you to integrate the packaging and deployment of your Mule applications with your Maven lifecycle.
See Package a Mule Application for packaging instructions.
The Mule Maven plugin is compatible with Mule runtime engine (Enterprise Edition) and with Mule Kernel (Community Edition).
Using the Mule Maven plugin, you can automate your Mule application deployment to CloudHub, to Anypoint Runtime Fabric, or on-premises, using any of the following deployment strategies:
-
CloudHub deployment
Deploys your Mule application to CloudHub.
See Deploy Applications to CloudHub for instructions. -
Runtime Fabric deployment
Deploys your Mule application to Anypoint Runtime Fabric.
See Deploy Applications to Anypoint Runtime Fabric for instructions. -
Runtime Manager REST API deployment
Deploys your Mule application to your server, or server clusters using the Runtime Manager REST API.
See Deploy a Mule Application Using the Runtime Manager REST API for instructions. -
Runtime Manager agent deployment
Deploy your Mule application using the Runtime Manager agent.
This deployment strategy works only if all your Mule instances reside in one address space.
See Deploy a Mule Application Using the Runtime Manager Agent for instructions. -
Standalone runtime deployment
Deploy your Mule application to a Mule instance running on your machine.
See Deploy a Mule Application to a Standalone Mule Runtime Engine for instructions.
Mule Maven Plugin Goals
The Mule Maven plugin has three goals:
-
package
Generates the jar file for your project. -
deploy
Automatically uploads and starts your application in any of the application deployment targets (CloudHub, Runtime Fabric, or On-Premises). -
mule:undeploy
Automatically removes your application from any of the application deployment targets (CloudHub, Runtime Fabric, or On-Premises).
Each goal accepts parameters that are unique to the desired plugin behavior.
To provide a parameter from the command line, prepend -D
to the parameter name.
Package Goal
The package
goal generates the application JAR file. This goal binds by default to the Maven lifecycle phase: package
.
Optional Parameters
Name | Type | Description |
---|---|---|
boolean |
Generates the application JAR file containing only the source code. This property is just for sharing purposes. |
|
|
boolean |
Attaches the source code inside the generated JAR file. |
|
boolean |
Doesn’t generate the repository with all the application dependencies inside the JAR file. This property is just for sharing purposes. |
For example, to execute the package
goal and set the attachMuleSources
parameter, you run the following command:
mvn package -DattachMuleSources
Deploy Goal
This goal uploads and deploys the application JAR file to any of the application deployment targets. The deploy goal binds by default to the Maven lifecycle phase: deploy
.
Optional Parameters
Name | Type | Description |
---|---|---|
|
String |
Path to the application JAR file to be deployed. By default is set to the application |
|
boolean |
Instructs the plugin to deploy using the deployment strategy defined in the plugin configuration. If the |
For example, to execute the deploy
goal and set the muleDeploy
parameter, you run the following command:
mvn deploy -DmuleDeploy
Undeploy Goal
This goal removes an application from any of the application deployment targets. It uses the information from the plugin configuration to remove the application from the defined deployment target.
To execute the undeploy
goal, run the following command:
mvn mule:undeploy
The undeploy goal also deletes the app in Mule Maven plugin 3.3.0 and later versions.
Add the Mule Maven Plugin to a Mule Project
Before you can perform any operations, you must add the Mule Maven plugin to your project.
Unresolved include directive in modules/ROOT/pages/mmp-concept.adoc - include::mule-runtime::partial$mmp-concept.adoc[]
Skip Plugin Execution
You can skip the plugin execution by setting the skip
parameter to true inside your deployment configuration:
<plugin>
Unresolved include directive in modules/ROOT/pages/mmp-concept.adoc - include::mule-runtime::example$mmp-concept-config.xml[]
<configuration>
<standaloneDeployment>
<muleHome>${mule.home.test}</muleHome>
<skip>true</skip>
</standaloneDeployment>
</configuration>
</plugin>
Skip Deployment Verification
You can skip the status verification of your deployed app by setting the skipDeploymentVerification
parameter to true inside of any of the platform deployments (Cloudhub, Runtime Manager, and Runtime Fabric):
<plugin>
Unresolved include directive in modules/ROOT/pages/mmp-concept.adoc - include::mule-runtime::example$mmp-concept-config.xml[]
<configuration>
<runtimeFabricDeployment>
...
<skipDeploymentVerification>true</skipDeploymentVerification>
...
</runtimeFabricDeployment>
</configuration>
</plugin>
If the skipDeploymentVerification
parameter is not present, the default value is false.
This feature is available in plugin version 3.2.5 and later.
Configure Shared Libraries
Configure shared libraries when you need to make an application’s dependency visible to your application’s connectors. To configure a dependency as a shared library, add the following elements in your Mule Maven plugin configuration inside your project’s pom.xml
file:
<sharedLibraries>
<sharedLibrary>
<groupId>${dependencyGroupID}</groupId>
<artifactId>${dependencyArtifactID}</artifactId>
</sharedLibrary>
</sharedLibraries>
The following example configures Anypoint Connector for Database (Database Connector) in a project, and also configures the MySQL driver as a shared library:
<build>
<plugins>
<!-- Mule Maven Plugin configuration -->
<plugin>
<groupId>org.mule.tools.maven</groupId>
<artifactId>mule-maven-plugin</artifactId>
<version>${mule.maven.plugin.version}</version>
<extensions>true</extensions>
<configuration>
<sharedLibraries>
<!-- MySQL driver dependency configured as a shared library -->
<sharedLibrary>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</sharedLibrary>
</sharedLibraries>
</configuration>
</plugin>
</plugins>
</build>
</dependencies>
<!--Database Connector dependency -->
<dependency>
<groupId>org.mule.connectors</groupId>
<artifactId>mule-db-connector</artifactId>
<version>1.5.0</version>
<classifier>mule-plugin</classifier>
</dependency>
<!-- MySQL driver dependency -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.33</version>
</dependency>
</dependencies>
Configure Additional Plugin Dependencies
You can configure additional plugin dependencies for the connectors in your application.
To configure additional plugin dependencies, add the following elements in your Mule Maven plugin configuration inside your project’s pom.xml
file:
<additionalPluginDependencies>
<plugin>
<groupId>${connectorGroupID}</groupId>
<artifactId>${connectorArtifactID}</artifactId>
<additionalDependencies>
<dependency>
<groupId>${dependencyGroupID}</groupId>
<artifactId>${dependencyArtifactID}</artifactId>
<version>${dependencyVersion}</version>
</dependency>
</additionalDependencies>
</plugin>
</additionalPluginDependencies>
The following example configures the Derby driver as a dependency of Database Connector:
<plugin>
<!-- Mule Maven Plugin configuration -->
<groupId>org.mule.tools.maven</groupId>
<artifactId>mule-maven-plugin</artifactId>
<version>${mule.maven.plugin.version}</version>
<configuration>
<!-- Plugin dependencies configuration-->
<additionalPluginDependencies>
<!-- The connector for which the dependency is defined -->
<plugin>
<groupId>org.mule.connectors</groupId>
<artifactId>mule-db-connector</artifactId>
<!-- Dependencies definition for the connector -->
<additionalDependencies>
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
<version>10.11.1.1</version>
</dependency>
</additionalDependencies>
</plugin>
</additionalPluginDependencies>
</configuration>
</plugin>
This feature is available in Mule 4.1.5 and later versions. |