This page explains how bootstrapping works in Maven modules.
Bootstrap files are used to load content into the JCR. Bootstrap files
can be shared across Magnolia instances and typically contain
configuration necessary to run modules or content (such as pages, assets
and others).
How bootstrapping in Maven modules works - overview
Here’s an overview of how bootstrapping in Maven modules works:
Export
JCR data files from Magnolia’s AdminCentral.
The exported files are placed in the
bootstrap folder of the module or webapp.
On installation, the bootstrapped data is automatically* imported by
Magnolia and added to its corresponding JCR workspace.
*) Bootstrap files can also be imported or bootstrapped manually using
the import actions in the JCR
Browser and many other apps. However, the content of this page is
limited to automatically importing bootstrap files and the term
bootstrapping is used in this context only.
Using bootstrapping folders
Magnolia by default scans some dedicated folders during start up. Add
your bootstrap files to this folders to automate the import of the JCR
data of these files. Bootstrap files can reside at a webapp or module
level.
All bootstrap files are only imported once!
Webapp-based bootstrapping is triggered by the WebappBootstrap task
only during the first run of the webapp and only after all modules have
been installed.
Module-based bootstrap files are imported during the first
installation of the module.
If you want to import bootstrap files on every start up of the Magnolia
instance or of a module, you must use custom installation tasks which
are executed by the Module version handler or Module start up classes.
Bootstrapping on the webapp level
The bootstrap directories for webapp bootstrap files are set by the
magnolia.bootstrap.dir property in the magnolia.properties file. See
Configuration
management for more.
By default the bootstrapping directories on the webapp level are:
Location
WEB-INF/bootstrap/author
Files will only be imported if the current
context is an author context.
WEB-INF/bootstrap/common
Files will be imported on any context.
Bootstraps are loaded from this directory only the first time the WAR is
installed in the container that is running for the first time.
The directory should contain XML or YAML files for initialization of a
blank Magnolia instance. If no content is found in any of the
repositories, they are initialized by importing the XML or YAML files
found in this directory.
Bootstrapping on a module level
Bootstrapping on a module level only works if your Module has a module
version handler class.
There are two directories that you can add bootstrap files to the
Magnolia Maven module:
Bootstrap files within mgnl-bootstrap-samples are only imported, if
the magnolia.bootstrap.samples property (which is set in the
magnolia.properties file, see
Configuration
management) is true:
magnolia.bootstrap.samples=true
Copy
Example - Bootstrap files in the travel-demo module
Here are the configuration files bootstrapped on installation of the
travel-demo module.
The files are in the directory
/src/main/resources/mgnl-bootstrap/travel-demo.
The magnolia.repositories.jackrabbit.cluster.master property can be
used to identity an instance as a cluster master node. By default this
property is set to false in magnolia.properties. When enabled
Magnolia bootstraps content only into master nodes. This ensures that
other (replica) nodes installed later don’t override already
bootstrapped content. See
Configuration
management for more.
Bootstrap configuration properties
The table below contains a list of
configuration
properties set in magnolia.properties that are relevant to
bootstrapping.
Property
Description
magnolia.bootstrap.samples
optional, default is true
Installs sample bootstrap files located in
/mgnl-bootstrap-samples/<module name> directory.
magnolia.bootstrap.dir
required, default is `WEB-INF/bootstrap/author WEB-INF/bootstrap/common`