The embed-bundles goal is used to programmatically add OSGi bundles to the vault package. By default, it will execute once during the prepare-package phase. Bundles will be inserted into the package at the path specified by the bundleInstallPath configuration parameter, with the effective node name matching the pattern [articleId]-[version].jar.
Different bundles may be embedded at different bundleInstallPaths in the same package by using multiple executions of this goal, each with their own bundleInstallPath value.
The vault-inf goal will modify the workspaceFilter to include the embedded bundle paths under an appropriate filter root if it is not already included.
The embed-packages goal is used to programmatically add sub-packages to the vault package, which will be installed by the CRX Package Manager upon extraction of the parent package. Sub-packages are embedded under /etc/packages at the path determined by their PackageId, which is constructed based on the group, name, and version package properties present within the zip binary at META-INF/vault/properties.xml.
The vault-inf goal will modify the workspaceFilter to include the embedded package paths under an /etc/packages filter root.
For more complex package installs, it may be necessary to implement one or more InstallHooks. A valid InstallHook is a jar with a Main-Class manifest attribute whose value references a class in the jar that implements com.day.jcr.vault.packaging.InstallHook.
The embed-hooks goal will embed such jars under META-INF/vault/hooks, as expected by CRX Package Manager.
The following example illustrates how to configure your POM to embed each type of dependency: bundles, packages, and install hooks. Notice that the embed configurations reference project dependencies by artifactId, which is similar to the convention used by the maven-bundle-plugin.
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>example-ui</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- be sure to specify the packaging type as 'vltpack' -->
<packaging>vltpack</packaging>
<dependencies>
<dependency>
<groupId>org.example</groupId>
<artifactId>example-bundle</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.example</groupId>
<artifactId>example-package</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- vltpack deploys CRX packages to maven repositories with a ".zip" extension -->
<type>zip</type>
</dependency>
<dependency>
<groupId>org.example</groupId>
<artifactId>example-hook</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>net.adamcin</groupId>
<artifactId>vltpack-maven-plugin</artifactId>
<version>1.0.0</version>
<extensions>true</extensions>
<!-- project dependencies are referenced by
artifactId in the plugin configuration -->
<configuration>
<embedBundles>
<bundle>example-bundle</bundle>
</embedBundles>
<embedPackages>
<package>example-package</package>
</embedPackages>
<embedHooks>
<hook>example-hook</hook>
</embedHooks>
</configuration>
</plugin>
</plugins>
</build>
</project>