Deploying a module using Maven

November 14, 2023

Deploying an OSGi module on a local server is relatively straightforward. Once you have the generated JAR file (in a Maven project it is generated in the target subdirectory), you can simply deploy it to the digital-factory-data/modules directory of your Jahia installation (this method is suited for development purposes only). This can be done whether the server is running or not, it will be picked up and deployed by the server. Every resource in the module (provided it deployed without any errors) will be immediately accessible, including any libraries that have been embedded in the package. If you have declared services in your bundle, they will also be available upon deployment.

If you intend to deploy a bundle in a cluster, we currently either recommend you use the built-in Jahia module manager, or that you use the provisioning or module manager REST API (and associated shell scripts). This will ensure that you properly deploy modules in the right order in the cluster. It is still possible to deploy them through a manual procedure but it is not recommended (and not supported). 

Deploying using the Jahia Maven Plugin

During development, you will probably want to deploy and redeploy your module often, so using the jahia:deploy goal makes this a lot easier to do often. You just need to setup a profile with the location and type of your target server, such as in the following example:


You can then simply compile and deploy your module using the following command line:

mvn clean install jahia:deploy -P jahia-8.0-tomcat

Deploying to a local Docker container

If you are using Docker on the same machine as your Maven project, you can deploy your project using the following command :

mvn jahia:deploy -Djahia.deploy.targetContainerName=CONTAINER_NAME

Where the CONTAINER_NAME is the name of the container in the Docker environment. It is also possible to use Deploy-free coding with such environments. 

Un-deploying or re-deploying a module

If you are using the Jahia Maven Plugin you can simply redeploy a module from the project using the jahia:deploy goal again. Upon deployment in the digital-factory-data/modules directory, Jahia will automatically undeploy the old version and deploy the new one. Alternatively, you can also use the administration’s manage modules UI to undeploy the module or remove the jar file from digital-factory-data/modules.