<?xml version="1.0" encoding="UTF-8"?>

<!-- Generated by maven-plugin-tools 3.6 (enhanced XHTML version with additional attributes)-->

<plugin>
  <name>Apache Jackrabbit FileVault - Package Maven Plugin</name>
  <description>Maven Plugin supporting creation of content packages.</description>
  <groupId>org.apache.jackrabbit</groupId>
  <artifactId>filevault-package-maven-plugin</artifactId>
  <version>1.3.1-SNAPSHOT</version>
  <goalPrefix>filevault-package</goalPrefix>
  <isolatedRealm>false</isolatedRealm>
  <inheritedByDefault>true</inheritedByDefault>
  <mojos>
    <mojo>
      <goal>analyze-classes</goal>
      <description>Analyzes the generated class files and generates a usage report. This report can be used by the &lt;code&gt;generate-metadata&lt;/code&gt; goal to generate a manifest header out of it.</description>
      <requiresDependencyResolution>compile</requiresDependencyResolution>
      <requiresDirectInvocation>false</requiresDirectInvocation>
      <requiresProject>true</requiresProject>
      <requiresReports>false</requiresReports>
      <aggregator>false</aggregator>
      <requiresOnline>false</requiresOnline>
      <inheritedByDefault>true</inheritedByDefault>
      <phase>process-classes</phase>
      <implementation>org.apache.jackrabbit.filevault.maven.packaging.mojo.AnalyzeClassesMojo</implementation>
      <language>java</language>
      <instantiationStrategy>per-lookup</instantiationStrategy>
      <executionStrategy>once-per-session</executionStrategy>
      <threadSafe>true</threadSafe>
      <parameters>
        <parameter>
          <name>excludedLibraries</name>
          <type>java.lang.String[]</type>
          <typeJavadocUrl>apidocs/java/lang/String.html</typeJavadocUrl>
          <required>false</required>
          <editable>true</editable>
          <description>Defines a list of libraries in partial maven coordinates that are not used for analysis.</description>
        </parameter>
        <parameter>
          <name>generatedImportPackage</name>
          <type>java.io.File</type>
          <typeJavadocUrl>apidocs/java/io/File.html</typeJavadocUrl>
          <required>false</required>
          <editable>true</editable>
          <description>File to store the generated manifest snippet.</description>
        </parameter>
        <parameter>
          <name>importUnusedPackages</name>
          <type>boolean</type>
          <required>false</required>
          <editable>true</editable>
          <description>Defines if unused packages should be included in the import-package entry if no classes exist in the project</description>
        </parameter>
        <parameter>
          <name>project</name>
          <type>org.apache.maven.project.MavenProject</type>
          <typeJavadocUrl>apidocs/org/apache/maven/project/MavenProject.html</typeJavadocUrl>
          <required>true</required>
          <editable>false</editable>
          <description>The Maven project.</description>
        </parameter>
        <parameter>
          <name>showImportPackageReport</name>
          <type>boolean</type>
          <required>false</required>
          <editable>true</editable>
          <description>Controls if the output should contain the package report.</description>
        </parameter>
        <parameter>
          <name>sourceDirectory</name>
          <type>java.io.File</type>
          <typeJavadocUrl>apidocs/java/io/File.html</typeJavadocUrl>
          <required>false</required>
          <editable>true</editable>
          <description>Location of class files</description>
        </parameter>
      </parameters>
      <configuration>
        <excludedLibraries implementation="java.lang.String[]">${vault.excludedLibraries}</excludedLibraries>
        <generatedImportPackage implementation="java.io.File" default-value="${project.build.directory}/vault-generated-import.txt">${vault.generatedImportPackage}</generatedImportPackage>
        <importUnusedPackages implementation="boolean">${vault.importUnusedPackages}</importUnusedPackages>
        <project implementation="org.apache.maven.project.MavenProject">${project}</project>
        <showImportPackageReport implementation="boolean" default-value="false">${vault.showPackageReport}</showImportPackageReport>
        <sourceDirectory implementation="java.io.File" default-value="${project.build.outputDirectory}">${vault.classesDirectory}</sourceDirectory>
      </configuration>
    </mojo>
    <mojo>
      <goal>check-signature</goal>
      <description>Checks the embedded libraries against a defined signature. Based on the &lt;a href=&quot;https://www.mojohaus.org/animal-sniffer/&quot;&gt;Animal Sniffer project&lt;/a&gt;.</description>
      <requiresDependencyResolution>compile</requiresDependencyResolution>
      <requiresDirectInvocation>false</requiresDirectInvocation>
      <requiresProject>true</requiresProject>
      <requiresReports>false</requiresReports>
      <aggregator>false</aggregator>
      <requiresOnline>false</requiresOnline>
      <inheritedByDefault>true</inheritedByDefault>
      <phase>process-classes</phase>
      <implementation>org.apache.jackrabbit.filevault.maven.packaging.mojo.CheckSignatureMojo</implementation>
      <language>java</language>
      <instantiationStrategy>per-lookup</instantiationStrategy>
      <executionStrategy>once-per-session</executionStrategy>
      <threadSafe>true</threadSafe>
      <parameters>
        <parameter>
          <name>classpathElements</name>
          <type>java.util.List</type>
          <typeJavadocUrl>apidocs/java/util/List.html</typeJavadocUrl>
          <required>true</required>
          <editable>false</editable>
          <description>Project classpath.</description>
        </parameter>
        <parameter>
          <name>embeddeds</name>
          <type>org.apache.jackrabbit.filevault.maven.packaging.Embedded[]</type>
          <typeJavadocUrl>apidocs/org/apache/jackrabbit/filevault/maven/packaging/Embedded.html</typeJavadocUrl>
          <required>false</required>
          <editable>true</editable>
          <description>list of embedded bundles to scan</description>
        </parameter>
        <parameter>
          <name>failOnMissingEmbed</name>
          <type>boolean</type>
          <required>true</required>
          <editable>true</editable>
          <description>Defines whether to fail the build when an embedded artifact is not found in the project&apos;s dependencies</description>
        </parameter>
        <parameter>
          <name>ignores</name>
          <type>java.lang.String[]</type>
          <typeJavadocUrl>apidocs/java/lang/String.html</typeJavadocUrl>
          <required>false</required>
          <editable>true</editable>
          <description>Class names to ignore signatures for (wildcards accepted).</description>
        </parameter>
        <parameter>
          <name>project</name>
          <type>org.apache.maven.project.MavenProject</type>
          <typeJavadocUrl>apidocs/org/apache/maven/project/MavenProject.html</typeJavadocUrl>
          <required>true</required>
          <editable>false</editable>
          <description>The Maven project.</description>
        </parameter>
        <parameter>
          <name>repoSession</name>
          <type>org.eclipse.aether.RepositorySystemSession</type>
          <typeJavadocUrl>apidocs/org/eclipse/aether/RepositorySystemSession.html</typeJavadocUrl>
          <required>true</required>
          <editable>false</editable>
          <description></description>
        </parameter>
        <parameter>
          <name>repositories</name>
          <type>java.util.List</type>
          <typeJavadocUrl>apidocs/java/util/List.html</typeJavadocUrl>
          <required>true</required>
          <editable>false</editable>
          <description></description>
        </parameter>
        <parameter>
          <name>signature</name>
          <type>org.codehaus.mojo.animal_sniffer.maven.Signature</type>
          <typeJavadocUrl>apidocs/org/codehaus/mojo/animal_sniffer/maven/Signature.html</typeJavadocUrl>
          <required>false</required>
          <editable>true</editable>
          <description>Signature module to use. If not set the signature check will be skipped.</description>
        </parameter>
        <parameter>
          <name>skipCheckSignature</name>
          <type>boolean</type>
          <required>false</required>
          <editable>true</editable>
          <description>If true, skip the signature check.</description>
        </parameter>
      </parameters>
      <configuration>
        <classpathElements implementation="java.util.List">${project.compileClasspathElements}</classpathElements>
        <failOnMissingEmbed implementation="boolean" default-value="false">${vault.failOnMissingEmbed}</failOnMissingEmbed>
        <project implementation="org.apache.maven.project.MavenProject">${project}</project>
        <repoSession implementation="org.eclipse.aether.RepositorySystemSession" default-value="${repositorySystemSession}"/>
        <repositories implementation="java.util.List" default-value="${project.remoteProjectRepositories}"/>
        <skipCheckSignature implementation="boolean" default-value="false">${vault.checksignature.skip}</skipCheckSignature>
      </configuration>
      <requirements>
        <requirement>
          <role>org.eclipse.aether.RepositorySystem</role>
          <field-name>repoSystem</field-name>
        </requirement>
      </requirements>
    </mojo>
    <mojo>
      <goal>format-xml</goal>
      <description>Either checks only the formatting of the Docview XML files to comply with the formatting rules from FileVault or also reformats those files.</description>
      <requiresDirectInvocation>false</requiresDirectInvocation>
      <requiresProject>true</requiresProject>
      <requiresReports>false</requiresReports>
      <aggregator>false</aggregator>
      <requiresOnline>false</requiresOnline>
      <inheritedByDefault>true</inheritedByDefault>
      <phase>process-sources</phase>
      <implementation>org.apache.jackrabbit.filevault.maven.packaging.mojo.FormatDocviewXmlMojo</implementation>
      <language>java</language>
      <instantiationStrategy>per-lookup</instantiationStrategy>
      <executionStrategy>once-per-session</executionStrategy>
      <threadSafe>true</threadSafe>
      <parameters>
        <parameter>
          <name>enableForIncrementalBuild</name>
          <type>boolean</type>
          <required>false</required>
          <editable>true</editable>
          <description>If set to &lt;code&gt;true&lt;/code&gt; will also run on incremental builds (i.e. within Eclipse with m2e). Otherwise this goal is skipped in incremental builds and only runs on full builds.</description>
        </parameter>
        <parameter>
          <name>excludes</name>
          <type>java.util.Set</type>
          <typeJavadocUrl>apidocs/java/util/Set.html</typeJavadocUrl>
          <required>false</required>
          <editable>true</editable>
          <description>Exclude patterns for files to exclude. If not set defaults to []. 
&lt;p&gt;Note: includes have precedences over excludes. Each pattern can either be an &lt;a href=&quot;https://ant.apache.org/manual/dirtasks.html#patterns&quot;&gt;Ant-like pattern&lt;/a&gt; or a regular expression if it is starting with &lt;code&gt;%regex[&lt;/code&gt; and ending with &lt;code&gt;]&lt;/code&gt;.&lt;/p&gt;</description>
        </parameter>
        <parameter>
          <name>includes</name>
          <type>java.util.Set</type>
          <typeJavadocUrl>apidocs/java/util/Set.html</typeJavadocUrl>
          <required>false</required>
          <editable>true</editable>
          <description>Include patterns for files to include. If not set defaults to [**\/*.xml]. 
&lt;p&gt;Note: includes have precedences over excludes. Each pattern can either be an &lt;a href=&quot;https://ant.apache.org/manual/dirtasks.html#patterns&quot;&gt;Ant-like pattern&lt;/a&gt; or a regular expression if it is starting with &lt;code&gt;%regex[&lt;/code&gt; and ending with &lt;code&gt;]&lt;/code&gt;.&lt;/p&gt;</description>
        </parameter>
        <parameter>
          <name>jcrRootSourceDirectory</name>
          <type>java.io.File[]</type>
          <typeJavadocUrl>apidocs/java/io/File.html</typeJavadocUrl>
          <required>true</required>
          <editable>true</editable>
          <description>The directory that contains the jcr_root of the content. Multiple directories can be specified as a comma separated list, which will act as a search path and cause the plugin to look for the first existing directory.</description>
        </parameter>
        <parameter>
          <name>validateOnly</name>
          <type>boolean</type>
          <required>false</required>
          <editable>true</editable>
          <description>If set to &lt;code&gt;true&lt;/code&gt; then fails the build if it encounters XML files which don&apos;t follow the formatting rules for XML Docview files. If set to &lt;code&gt;false&lt;/code&gt; will reformat all XML Docview files.</description>
        </parameter>
      </parameters>
      <configuration>
        <enableForIncrementalBuild implementation="boolean" default-value="false"/>
        <jcrRootSourceDirectory implementation="java.io.File[]" default-value="${project.basedir}/jcr_root,${project.basedir}/src/main/jcr_root,${project.basedir}/src/main/content/jcr_root,${project.basedir}/src/content/jcr_root,${project.build.outputDirectory}">${vault.jcrRootSourceDirectory}</jcrRootSourceDirectory>
        <validateOnly implementation="boolean" default-value="false"/>
      </configuration>
      <requirements>
        <requirement>
          <role>org.sonatype.plexus.build.incremental.BuildContext</role>
          <field-name>buildContext</field-name>
        </requirement>
      </requirements>
    </mojo>
    <mojo>
      <goal>generate-cnd</goal>
      <description>Generates a &lt;a href=&quot;https://jackrabbit.apache.org/jcr/node-type-notation.html&quot;&gt;CND file&lt;/a&gt; containing all used node types and namespaces. It uses the &lt;a href=&quot;https://s.apache.org/jcr-2.0-spec/3_Repository_Model.html#3.7.11%20Standard%20Application%20Node%20Types&quot;&gt;default namespaces and node types&lt;/a&gt; and in addition some provided ones as source node type and namespace registry. From those only the ones being really leveraged in the package end up in the generated CND. The generated CND will end up in the &lt;a href=&quot;https://jackrabbit.apache.org/filevault/nodetypes.html&quot;&gt;package metadata&lt;/a&gt; and all contained namespaces and node types are automatically registered during installation (in case they are not yet registered).</description>
      <requiresDependencyResolution>compile</requiresDependencyResolution>
      <requiresDirectInvocation>false</requiresDirectInvocation>
      <requiresProject>true</requiresProject>
      <requiresReports>false</requiresReports>
      <aggregator>false</aggregator>
      <requiresOnline>false</requiresOnline>
      <inheritedByDefault>true</inheritedByDefault>
      <phase>generate-sources</phase>
      <implementation>org.apache.jackrabbit.filevault.maven.packaging.mojo.GenerateCndMojo</implementation>
      <language>java</language>
      <instantiationStrategy>per-lookup</instantiationStrategy>
      <executionStrategy>once-per-session</executionStrategy>
      <since>1.3.0</since>
      <threadSafe>true</threadSafe>
      <parameters>
        <parameter>
          <name>addDefaultExcludes</name>
          <type>boolean</type>
          <since>1.1.0</since>
          <required>false</required>
          <editable>true</editable>
          <description>By default certain metadata files are excluded which means they will not be copied into the package. If you need them for a particular reason you can do that by setting this parameter to &lt;code&gt;false&lt;/code&gt;. This means all files matching the following &lt;a href=&quot;https://ant.apache.org/manual/dirtasks.html#patterns&quot;&gt;Ant patterns&lt;/a&gt; won&apos;t be copied by default. 
&lt;ul&gt;
 &lt;li&gt;Misc: **/*~, **/#*#, **/.#*, **/%*%, **/._*&lt;/li&gt;
 &lt;li&gt;CVS: **/CVS, **/CVS/**, **/.cvsignore&lt;/li&gt;
 &lt;li&gt;SVN: **/.svn, **/.svn/**&lt;/li&gt;
 &lt;li&gt;GNU: **/.arch-ids, **/.arch-ids/**&lt;/li&gt;
 &lt;li&gt;Bazaar: **/.bzr, **/.bzr/**&lt;/li&gt;
 &lt;li&gt;SurroundSCM: **/.MySCMServerInfo&lt;/li&gt;
 &lt;li&gt;Mac: **/.DS_Store&lt;/li&gt;
 &lt;li&gt;Serena Dimension: **/.metadata, **/.metadata/**&lt;/li&gt;
 &lt;li&gt;Mercurial: **/.hg, **/.hg/**&lt;/li&gt;
 &lt;li&gt;GIT: **/.git, **/.git/**&lt;/li&gt;
 &lt;li&gt;Bitkeeper: **/BitKeeper, **/BitKeeper/**, **/ChangeSet, **/ChangeSet/**&lt;/li&gt;
 &lt;li&gt;Darcs: **/_darcs, **/_darcs/**, **/.darcsrepo, **/.darcsrepo/****/-darcs-backup*, **/.darcs-temp-mail&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;&lt;strong&gt;See also:&lt;/strong&gt; org.codehaus.plexus.util.AbstractScanner.DEFAULTEXCLUDES&lt;!-- this link does not have javadoc linked --&gt;</description>
        </parameter>
        <parameter>
          <name>additionalInputCndUrls</name>
          <type>java.util.List</type>
          <typeJavadocUrl>apidocs/java/util/List.html</typeJavadocUrl>
          <required>false</required>
          <editable>true</editable>
          <description>List of URLs pointing to a &lt;a href=&quot;https://jackrabbit.apache.org/jcr/node-type-notation.html&quot;&gt;CND&lt;/a&gt; which define the additional namespaces and node types potentially used in this package apart from the &lt;a href=&quot;https://s.apache.org/jcr-2.0-spec/3_Repository_Model.html#3.7.11%20Standard%20Application%20Node%20Types&quot;&gt;default ones defined in JCR 2.0&lt;/a&gt;. If a URI is pointing to a JAR it will leverage all the node types being mentioned in the &lt;a href=&quot;https://sling.apache.org/documentation/bundles/content-loading-jcr-contentloader.html#declared-node-type-registration&quot;&gt;&lt;code&gt;Sling-Nodetypes&lt;/code&gt; manifest header&lt;/a&gt;. Apart from the &lt;a href=&quot;https://docs.oracle.com/javase/8/docs/api/java/net/URL.html#URL-java.lang.String-java.lang.String-int-java.lang.String-&quot;&gt;standard protocols&lt;/a&gt; the scheme &lt;code&gt;tccl&lt;/code&gt; can be used to reference names from the &lt;a href=&quot;https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html#getContextClassLoader--&quot;&gt;Thread&apos;s context class loader&lt;/a&gt;. In the Maven plugin context this is the &lt;a href=&quot;http://maven.apache.org/guides/mini/guide-maven-classloading.html?ref=driverlayer.com/web#3-plugin-classloaders&quot;&gt;plugin classloader&lt;/a&gt;.</description>
        </parameter>
        <parameter>
          <name>builtContentDirectory</name>
          <type>java.io.File</type>
          <typeJavadocUrl>apidocs/java/io/File.html</typeJavadocUrl>
          <deprecated>Use &lt;a href=&quot;#jcrRootSourceDirectory&quot;&gt;&lt;code&gt;jcrRootSourceDirectory&lt;/code&gt;&lt;/a&gt; instead.</deprecated>
          <required>false</required>
          <editable>true</editable>
          <description>The directory containing the content to be packaged up into the content package.</description>
        </parameter>
        <parameter>
          <name>classifier</name>
          <type>java.lang.String</type>
          <typeJavadocUrl>apidocs/java/lang/String.html</typeJavadocUrl>
          <since>1.1.4</since>
          <required>false</required>
          <editable>true</editable>
          <description>Optional classifier to add to the generated package. If given, the artifact will be attached as a supplemental artifact having this classifier. Also all generated metadata will be pushed to &lt;code&gt;&amp;lt;workDirectory&amp;gt;-&amp;lt;classifier&amp;gt;&lt;/code&gt; and will preferably be looked up from there. In addition the embedded file names will be exchanged leveraging a classifier specific property.</description>
        </parameter>
        <parameter>
          <name>excludes</name>
          <type>java.util.Set</type>
          <typeJavadocUrl>apidocs/java/util/Set.html</typeJavadocUrl>
          <required>true</required>
          <editable>true</editable>
          <description>The file name patterns to exclude (in addition to the default ones mentioned at &lt;a href=&quot;#addDefaultExcludes&quot;&gt;&lt;code&gt;addDefaultExcludes&lt;/code&gt;&lt;/a&gt;. The format of each pattern is described in &lt;code&gt;org.codehaus.plexus.util.DirectoryScanner&lt;/code&gt;&lt;!-- this link does not have javadoc linked --&gt;. The comparison is against the path relative to the according filter root. Since this is hardly predictable it is recommended to use only filename/directory name patterns here but not take into account file system hierarchies! 
&lt;p&gt;Each value is either a regex pattern if enclosed within &lt;code&gt;%regex[&lt;/code&gt; and &lt;code&gt;]&lt;/code&gt;, otherwise an &lt;a href=&quot;https://ant.apache.org/manual/dirtasks.html#patterns&quot;&gt;Ant pattern&lt;/a&gt;.&lt;/p&gt;</description>
        </parameter>
        <parameter>
          <name>jcrRootSourceDirectory</name>
          <type>java.io.File[]</type>
          <typeJavadocUrl>apidocs/java/io/File.html</typeJavadocUrl>
          <required>true</required>
          <editable>true</editable>
          <description>The directory that contains the jcr_root of the content. Multiple directories can be specified as a comma separated list, which will act as a search path and cause the plugin to look for the first existing directory.</description>
        </parameter>
        <parameter>
          <name>metaInfVaultDirectory</name>
          <type>java.io.File[]</type>
          <typeJavadocUrl>apidocs/java/io/File.html</typeJavadocUrl>
          <required>true</required>
          <editable>true</editable>
          <description>The directory that contains the META-INF/vault. Multiple directories can be specified as a comma separated list, which will act as a search path and cause the plugin to look for the first existing directory. 
&lt;p&gt;This directory is added as fileset to the package archiver before the the &lt;a href=&quot;#workDirectory&quot;&gt;&lt;code&gt;workDirectory&lt;/code&gt;&lt;/a&gt;. This means that files specified in this directory have precedence over the one present in the &lt;a href=&quot;#workDirectory&quot;&gt;&lt;code&gt;workDirectory&lt;/code&gt;&lt;/a&gt;. For example, if this directory contains a &lt;code&gt;properties.xml&lt;/code&gt; it will not be overwritten by the generated one. A special case is the &lt;code&gt;filter.xml&lt;/code&gt; which will be merged with inline filters if present.&lt;/p&gt;</description>
        </parameter>
        <parameter>
          <name>outputTimestamp</name>
          <type>java.lang.String</type>
          <typeJavadocUrl>apidocs/java/lang/String.html</typeJavadocUrl>
          <since>1.1.0</since>
          <required>false</required>
          <editable>true</editable>
          <description>Timestamp for reproducible output archive entries, either formatted as ISO 8601 &lt;code&gt;yyyy-MM-dd&apos;T&apos;HH:mm:ssXXX&lt;/code&gt; or as an int representing seconds since the epoch (like &lt;a href=&quot;https://reproducible-builds.org/docs/source-date-epoch/&quot;&gt;SOURCE_DATE_EPOCH&lt;/a&gt;).</description>
        </parameter>
        <parameter>
          <name>prefix</name>
          <type>java.lang.String</type>
          <typeJavadocUrl>apidocs/java/lang/String.html</typeJavadocUrl>
          <required>false</required>
          <editable>true</editable>
          <description>Adds a path prefix to all resources. Useful for shallower source trees. This does not apply to files in &lt;a href=&quot;#workDirectory&quot;&gt;&lt;code&gt;workDirectory&lt;/code&gt;&lt;/a&gt; nor &lt;a href=&quot;#metaInfVaultDirectory&quot;&gt;&lt;code&gt;metaInfVaultDirectory&lt;/code&gt;&lt;/a&gt; but e.g. is relevant for the default filter and for the jcr_root of the package. Must start with &quot;/&quot; if not empty. As separator only forward slashes are allowed. The trailing slash is automatically appended if not there.</description>
        </parameter>
        <parameter>
          <name>project</name>
          <type>org.apache.maven.project.MavenProject</type>
          <typeJavadocUrl>apidocs/org/apache/maven/project/MavenProject.html</typeJavadocUrl>
          <required>true</required>
          <editable>false</editable>
          <description>The Maven project.</description>
        </parameter>
        <parameter>
          <name>workDirectory</name>
          <type>java.io.File</type>
          <typeJavadocUrl>apidocs/java/io/File.html</typeJavadocUrl>
          <required>true</required>
          <editable>true</editable>
          <description>The output directory for goal &quot;generate-metadata&quot; and additional input directory containing the metadata to be packaged up into the content package for goal &quot;package&quot;. The directory name is suffixed with &lt;code&gt;-&amp;lt;classifier&amp;gt;&lt;/code&gt; in case a &lt;a href=&quot;#classifier&quot;&gt;&lt;code&gt;classifier&lt;/code&gt;&lt;/a&gt; is used. In case of the &quot;package&quot; goal this falls back to the non-suffixed directory name in case the one with suffix does not exist.</description>
        </parameter>
      </parameters>
      <configuration>
        <addDefaultExcludes implementation="boolean" default-value="true"/>
        <additionalInputCndUrls implementation="java.util.List">${vault.inputCndUrls}</additionalInputCndUrls>
        <classifier implementation="java.lang.String">${vault.classifier}</classifier>
        <excludes implementation="java.util.Set" default-value="**/.vlt,**/.vltignore,**/.gitignore">${vault.excludes}</excludes>
        <jcrRootSourceDirectory implementation="java.io.File[]" default-value="${project.basedir}/jcr_root,${project.basedir}/src/main/jcr_root,${project.basedir}/src/main/content/jcr_root,${project.basedir}/src/content/jcr_root,${project.build.outputDirectory}">${vault.jcrRootSourceDirectory}</jcrRootSourceDirectory>
        <metaInfVaultDirectory implementation="java.io.File[]" default-value="${project.basedir}/META-INF/vault,${project.basedir}/src/main/META-INF/vault,${project.basedir}/src/main/content/META-INF/vault,${project.basedir}/src/content/META-INF/vault">${vault.metaInfVaultDirectory}</metaInfVaultDirectory>
        <outputTimestamp implementation="java.lang.String" default-value="${project.build.outputTimestamp}"/>
        <prefix implementation="java.lang.String" default-value="">${vault.prefix}</prefix>
        <project implementation="org.apache.maven.project.MavenProject">${project}</project>
        <workDirectory implementation="java.io.File" default-value="${project.build.directory}/vault-work"/>
      </configuration>
    </mojo>
    <mojo>
      <goal>generate-metadata</goal>
      <description>Generates the metadata ending up in the content package like &lt;code&gt;META-INF/MANIFEST.MF&lt;/code&gt; as well as the files ending up in &lt;code&gt;META-INF/vault&lt;/code&gt; like &lt;code&gt;filter.xml&lt;/code&gt;, &lt;code&gt;properties.xml&lt;/code&gt;, &lt;code&gt;config.xml&lt;/code&gt; and &lt;code&gt;settings.xml&lt;/code&gt;. Those files will be written to the directory given via parameter &lt;a href=&quot;#workDirectory&quot;&gt;&lt;code&gt;workDirectory&lt;/code&gt;&lt;/a&gt;. In addition performs some validations. Also configures artifacts (like OSGi bundles or subpackages) to be embedded in the content package as those may affect metadata as well. The generated metadata is usually packaged in a content package in a subsequent goal &lt;code&gt;package&lt;/code&gt;. 
&lt;p&gt;&lt;i&gt;This goal is executed/bound by default for Maven modules of type &lt;code&gt;content-package&lt;/code&gt;.&lt;/i&gt;&lt;/p&gt;</description>
      <requiresDependencyResolution>compile</requiresDependencyResolution>
      <requiresDirectInvocation>false</requiresDirectInvocation>
      <requiresProject>true</requiresProject>
      <requiresReports>false</requiresReports>
      <aggregator>false</aggregator>
      <requiresOnline>false</requiresOnline>
      <inheritedByDefault>true</inheritedByDefault>
      <phase>generate-test-sources</phase>
      <implementation>org.apache.jackrabbit.filevault.maven.packaging.mojo.GenerateMetadataMojo</implementation>
      <language>java</language>
      <instantiationStrategy>per-lookup</instantiationStrategy>
      <executionStrategy>once-per-session</executionStrategy>
      <since>1.0.3</since>
      <threadSafe>true</threadSafe>
      <parameters>
        <parameter>
          <name>accessControlHandling</name>
          <alias>acHandling</alias>
          <type>org.apache.jackrabbit.vault.fs.io.AccessControlHandling</type>
          <typeJavadocUrl>apidocs/org/apache/jackrabbit/vault/fs/io/AccessControlHandling.html</typeJavadocUrl>
          <required>false</required>
          <editable>true</editable>
          <description>Defines the Access control handling. This will become the &lt;code&gt;acHandling&lt;/code&gt; property of the properties.xml file.&lt;br /&gt; Possible values: 
&lt;ul&gt;
 &lt;li&gt;&lt;code&gt;ignore&lt;/code&gt;: Ignores the packaged access control and leaves the target unchanged.&lt;/li&gt;
 &lt;li&gt;&lt;code&gt;overwrite&lt;/code&gt;: Applies the access control provided with the package to the target. this also removes existing access control.&lt;/li&gt;
 &lt;li&gt;&lt;code&gt;merge&lt;/code&gt;: Merge access control provided with the package with the one in the content by replacing the access control entries of corresponding principals (i.e. package first). It never alters access control entries of principals not present in the package.&lt;/li&gt;
 &lt;li&gt;&lt;code&gt;merge_preserve&lt;/code&gt;: Merge access control in the content with the one provided with the package by adding the access control entries of principals not present in the content (i.e. content first). It never alters access control entries already existing in the content.&lt;/li&gt;
 &lt;li&gt;&lt;code&gt;clear&lt;/code&gt;: Clears all access control on the target system.&lt;/li&gt;
&lt;/ul&gt;</description>
        </parameter>
        <parameter>
          <name>allowIndexDefinitions</name>
          <type>boolean</type>
          <required>true</required>
          <editable>true</editable>
          <description>Defines whether the package is allowed to contain index definitions. This will become the &lt;code&gt;allowIndexDefinitions&lt;/code&gt; property of the properties.xml file.</description>
        </parameter>
        <parameter>
          <name>archive</name>
          <type>org.apache.maven.archiver.MavenArchiveConfiguration</type>
          <typeJavadocUrl>apidocs/org/apache/maven/archiver/MavenArchiveConfiguration.html</typeJavadocUrl>
          <required>false</required>
          <editable>true</editable>
          <description>The archive configuration to use. See &lt;a href=&quot;http://maven.apache.org/shared/maven-archiver/index.html&quot;&gt;the documentation for Maven Archiver&lt;/a&gt;. All settings related to manifest are not relevant as this gets overwritten by the manifest in &lt;a href=&quot;#workDirectory&quot;&gt;&lt;code&gt;workDirectory&lt;/code&gt;&lt;/a&gt;</description>
        </parameter>
        <parameter>
          <name>classifier</name>
          <type>java.lang.String</type>
          <typeJavadocUrl>apidocs/java/lang/String.html</typeJavadocUrl>
          <since>1.1.4</since>
          <required>false</required>
          <editable>true</editable>
          <description>Optional classifier to add to the generated package. If given, the artifact will be attached as a supplemental artifact having this classifier. Also all generated metadata will be pushed to &lt;code&gt;&amp;lt;workDirectory&amp;gt;-&amp;lt;classifier&amp;gt;&lt;/code&gt; and will preferably be looked up from there. In addition the embedded file names will be exchanged leveraging a classifier specific property.</description>
        </parameter>
        <parameter>
          <name>dependencies</name>
          <type>java.util.Collection</type>
          <typeJavadocUrl>apidocs/java/util/Collection.html</typeJavadocUrl>
          <required>false</required>
          <editable>true</editable>
          <description>Defines the list of dependencies A dependency is declared as a &lt;code&gt;&amp;lt;dependency&amp;gt;&lt;/code&gt; element of a list style &lt;code&gt;&amp;lt;dependencies&amp;gt;&lt;/code&gt; element: 
&lt;pre&gt;&amp;lt;dependency&amp;gt;
    &amp;lt;group&amp;gt;theGroup&amp;lt;/group&amp;gt;
    &amp;lt;name&amp;gt;theName&amp;lt;/name&amp;gt;
    &amp;lt;version&amp;gt;1.5&amp;lt;/version&amp;gt;
&amp;lt;/dependency&amp;gt;
&lt;/pre&gt;
&lt;p&gt;The dependency can also reference a maven project dependency, this is preferred as it yields to more robust builds.&lt;/p&gt;
&lt;pre&gt;&amp;lt;dependency&amp;gt;
    &amp;lt;groupId&amp;gt;theGroup&amp;lt;/groupId&amp;gt;
    &amp;lt;artifactId&amp;gt;theName&amp;lt;/artifactId&amp;gt;
&amp;lt;/dependency&amp;gt;
&lt;/pre&gt;
&lt;p&gt;The &lt;code&gt;versionRange&lt;/code&gt; may be indicated as a single version, in which case the version range has no upper bound and defines the minimal version accepted. Otherwise, the version range defines a lower and upper bound of accepted versions, where the bounds are either included using parentheses &lt;code&gt;()&lt;/code&gt; or excluded using brackets &lt;code&gt;[]&lt;/code&gt;&lt;/p&gt;</description>
        </parameter>
        <parameter>
          <name>embeddeds</name>
          <type>org.apache.jackrabbit.filevault.maven.packaging.Embedded[]</type>
          <typeJavadocUrl>apidocs/org/apache/jackrabbit/filevault/maven/packaging/Embedded.html</typeJavadocUrl>
          <required>false</required>
          <editable>true</editable>
          <description>List of filters for artifacts to embed in the package. The &lt;a href=&quot;apidocs/org/apache/jackrabbit/filevault/maven/packaging/Embedded.html&quot;&gt;&lt;code&gt;org.apache.jackrabbit.filevault.maven.packaging.Embedded&lt;/code&gt;&lt;/a&gt; class represents one or multiple embedded artifact dependencies from the project descriptor. Each &lt;code&gt;&amp;lt;embedded&amp;gt;&lt;/code&gt; element may configure any of the following fields 
&lt;p&gt;&lt;/p&gt;
&lt;table&gt;
 &lt;tbody&gt;
  &lt;tr&gt;
   &lt;td&gt;&lt;code&gt;groupId&lt;/code&gt;&lt;/td&gt;
   &lt;td&gt;&lt;code&gt;String&lt;/code&gt;&lt;!-- this link does not have javadoc linked --&gt;&lt;/td&gt;
   &lt;td&gt;Filter criterion against the group id of a project dependency. A pattern as described below.&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;&lt;code&gt;artifactId&lt;/code&gt;&lt;/td&gt;
   &lt;td&gt;&lt;code&gt;String&lt;/code&gt;&lt;!-- this link does not have javadoc linked --&gt;&lt;/td&gt;
   &lt;td&gt;Filter criterion against the artifact id of a project dependency. A pattern as described below.&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;&lt;code&gt;scope&lt;/code&gt;&lt;/td&gt;
   &lt;td&gt;&lt;code&gt;org.apache.maven.artifact.resolver.filter.ScopeArtifactFilter&lt;/code&gt;&lt;!-- this link does not have javadoc linked --&gt;&lt;/td&gt;
   &lt;td&gt;Filter criterion against the &lt;a href=&quot;https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Scope&quot;&gt;scope of a project dependency&lt;/a&gt;. Possible values are 
    &lt;ul&gt;
     &lt;li&gt;&lt;code&gt;test&lt;/code&gt;, which allows every scope&lt;/li&gt;
     &lt;li&gt;&lt;code&gt;compile+runtime&lt;/code&gt; which allows every scope except &lt;code&gt;test&lt;/code&gt;&lt;/li&gt;
     &lt;li&gt;&lt;code&gt;runtime+system&lt;/code&gt; which allows every scope except &lt;code&gt;test&lt;/code&gt; and &lt;code&gt;provided&lt;/code&gt;&lt;/li&gt;
     &lt;li&gt;&lt;code&gt;compile&lt;/code&gt; which allows only scope &lt;code&gt;compile&lt;/code&gt;, &lt;code&gt;provided&lt;/code&gt; and &lt;code&gt;system&lt;/code&gt;&lt;/li&gt;
     &lt;li&gt;&lt;code&gt;runtime&lt;/code&gt; which only allows scope &lt;code&gt;runtime&lt;/code&gt; and &lt;code&gt;compile&lt;/code&gt;.&lt;/li&gt;
    &lt;/ul&gt;&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;&lt;code&gt;type&lt;/code&gt;&lt;/td&gt;
   &lt;td&gt;&lt;code&gt;String&lt;/code&gt;&lt;!-- this link does not have javadoc linked --&gt;&lt;/td&gt;
   &lt;td&gt;Filter criterion against the type of a project dependency. A pattern as described below.&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;&lt;code&gt;classifier&lt;/code&gt;&lt;/td&gt;
   &lt;td&gt;&lt;code&gt;String&lt;/code&gt;&lt;!-- this link does not have javadoc linked --&gt;&lt;/td&gt;
   &lt;td&gt;Filter criterion against the classifier of a project dependency. A pattern as described below.&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;&lt;code&gt;filter&lt;/code&gt;&lt;/td&gt;
   &lt;td&gt;&lt;code&gt;Boolean&lt;/code&gt;&lt;!-- this link does not have javadoc linked --&gt;&lt;/td&gt;
   &lt;td&gt;If set to &lt;code&gt;true&lt;/code&gt; adds the embedded artifact location to the package&apos;s filter. Default = &lt;code&gt;false&lt;/code&gt;.&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;&lt;code&gt;isAllVersionsFilter&lt;/code&gt;&lt;/td&gt;
   &lt;td&gt;&lt;code&gt;Boolean&lt;/code&gt;&lt;!-- this link does not have javadoc linked --&gt;&lt;/td&gt;
   &lt;td&gt;If &lt;code&gt;filter&lt;/code&gt; is &lt;code&gt;true&lt;/code&gt; and this is &lt;code&gt;true&lt;/code&gt; as well, the filter entry will contain all versions of the same artifact (by creating an according filter pattern). Default = &lt;code&gt;false&lt;/code&gt;.&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;&lt;code&gt;excludeTransitive&lt;/code&gt;&lt;/td&gt;
   &lt;td&gt;&lt;code&gt;Boolean&lt;/code&gt;&lt;!-- this link does not have javadoc linked --&gt;&lt;/td&gt;
   &lt;td&gt;If &lt;code&gt;true&lt;/code&gt; only filters on direct dependencies (not on transitive ones). Default = &lt;code&gt;false&lt;/code&gt;.&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;&lt;code&gt;target&lt;/code&gt;&lt;/td&gt;
   &lt;td&gt;&lt;code&gt;String&lt;/code&gt;&lt;!-- this link does not have javadoc linked --&gt;&lt;/td&gt;
   &lt;td&gt;The parent folder location in the package where to place the embedded artifact. Falls back to &lt;a href=&quot;#embeddedTarget&quot;&gt;&lt;code&gt;embeddedTarget&lt;/code&gt;&lt;/a&gt; if not set.&lt;/td&gt;
  &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt; All fields are optional. All filter criteria is concatenated with AND logic (i.e. every criterion must match for a specific dependency to be embedded). &lt;br /&gt; All filter patterns follow the format &lt;code&gt;&amp;lt;filter&amp;gt;{,&amp;lt;filter&amp;gt;}&lt;/code&gt;. Each &lt;code&gt;filter&lt;/code&gt; is a string which is either an exclude (if it starts with a &lt;code&gt;~&lt;/code&gt;) or an include otherwise. If the first &lt;code&gt;filter&lt;/code&gt; is an include the pattern acts as whitelist, otherwise as blacklist. The last matching filter determines the outcome. Only matching dependencies are being considered for being embedded. &lt;br /&gt; &lt;i&gt;The difference between &lt;a href=&quot;#embeddeds&quot;&gt;&lt;code&gt;embeddeds&lt;/code&gt;&lt;/a&gt; and &lt;a href=&quot;#subPackages&quot;&gt;&lt;code&gt;subPackages&lt;/code&gt;&lt;/a&gt; is that for the former an explicit target is given while for the latter the target is being computed from the artifact&apos;s vault property file.&lt;/i&gt;</description>
        </parameter>
        <parameter>
          <name>embeddedTarget</name>
          <type>java.lang.String</type>
          <typeJavadocUrl>apidocs/java/lang/String.html</typeJavadocUrl>
          <required>false</required>
          <editable>true</editable>
          <description>Defines the path under which the embedded bundles are placed. defaults to &apos;/apps/bundles/install&apos;</description>
        </parameter>
        <parameter>
          <name>failOnEmptyFilter</name>
          <type>boolean</type>
          <deprecated>This is no longer evaluated as every package is supposed to come with a non-empty filter</deprecated>
          <required>true</required>
          <editable>true</editable>
          <description>Controls if empty workspace filter fails the build.</description>
        </parameter>
        <parameter>
          <name>failOnMissingEmbed</name>
          <type>boolean</type>
          <required>true</required>
          <editable>true</editable>
          <description>Defines whether to fail the build when an embedded artifact is not found in the project&apos;s dependencies</description>
        </parameter>
        <parameter>
          <name>filters</name>
          <type>org.apache.jackrabbit.filevault.maven.packaging.Filters</type>
          <typeJavadocUrl>apidocs/org/apache/jackrabbit/filevault/maven/packaging/Filters.html</typeJavadocUrl>
          <required>false</required>
          <editable>true</editable>
          <description>Defines the content of the filter.xml file. Each filter consists of the mandatory element &lt;code&gt;root&lt;/code&gt; and the optional &lt;code&gt;mode&lt;/code&gt; and &lt;code&gt;type&lt;/code&gt; elements. All those elements are simple strings. In addition optionally a number of &lt;code&gt;include&lt;/code&gt; and &lt;code&gt;exclude&lt;/code&gt; elements are supported below &lt;code&gt;includes&lt;/code&gt;/&lt;code&gt;excludes&lt;/code&gt; respectively.</description>
        </parameter>
        <parameter>
          <name>filterSource</name>
          <type>java.io.File</type>
          <typeJavadocUrl>apidocs/java/io/File.html</typeJavadocUrl>
          <required>false</required>
          <editable>true</editable>
          <description>Optional file that specifies the source of the workspace filter. The filters specified in the configuration and injected via emebedds or subpackages are merged into it.</description>
        </parameter>
        <parameter>
          <name>generatedImportPackage</name>
          <type>java.io.File</type>
          <typeJavadocUrl>apidocs/java/io/File.html</typeJavadocUrl>
          <required>false</required>
          <editable>true</editable>
          <description>File from which to read the generated manifest snippet generated by goal &quot;analyze-classes&quot;. The contents of the file end up in the `import-package` entry in the manifest.</description>
        </parameter>
        <parameter>
          <name>group</name>
          <type>java.lang.String</type>
          <typeJavadocUrl>apidocs/java/lang/String.html</typeJavadocUrl>
          <required>true</required>
          <editable>true</editable>
          <description>The groupId used for the generated content package. This will be part of the target installation path of the content package.</description>
        </parameter>
        <parameter>
          <name>importPackage</name>
          <type>java.lang.String</type>
          <typeJavadocUrl>apidocs/java/lang/String.html</typeJavadocUrl>
          <required>false</required>
          <editable>true</editable>
          <description>Defines additional package dependencies via the `import-package` entry in the manifest. Is merged with the input from &lt;a href=&quot;#generatedImportPackage&quot;&gt;&lt;code&gt;generatedImportPackage&lt;/code&gt;&lt;/a&gt;.</description>
        </parameter>
        <parameter>
          <name>installHooks</name>
          <type>java.util.List</type>
          <typeJavadocUrl>apidocs/java/util/List.html</typeJavadocUrl>
          <since>1.1.8</since>
          <required>false</required>
          <editable>true</editable>
          <description>A list of artifact coordinates in the format &lt;code&gt;&amp;lt;groupId&amp;gt;:&amp;lt;artifactId&amp;gt;[:&amp;lt;extension&amp;gt;[:&amp;lt;classifier&amp;gt;]]:&amp;lt;version&amp;gt;&lt;/code&gt;. The resolved artifacts are embedded as &lt;a href=&quot;http://jackrabbit.apache.org/filevault/installhooks.html&quot;&gt;internal install hooks&lt;/a&gt; in the resulting content package.</description>
        </parameter>
        <parameter>
          <name>metaInfVaultDirectory</name>
          <type>java.io.File[]</type>
          <typeJavadocUrl>apidocs/java/io/File.html</typeJavadocUrl>
          <required>true</required>
          <editable>true</editable>
          <description>The directory that contains the META-INF/vault. Multiple directories can be specified as a comma separated list, which will act as a search path and cause the plugin to look for the first existing directory. 
&lt;p&gt;This directory is added as fileset to the package archiver before the the &lt;a href=&quot;#workDirectory&quot;&gt;&lt;code&gt;workDirectory&lt;/code&gt;&lt;/a&gt;. This means that files specified in this directory have precedence over the one present in the &lt;a href=&quot;#workDirectory&quot;&gt;&lt;code&gt;workDirectory&lt;/code&gt;&lt;/a&gt;. For example, if this directory contains a &lt;code&gt;properties.xml&lt;/code&gt; it will not be overwritten by the generated one. A special case is the &lt;code&gt;filter.xml&lt;/code&gt; which will be merged with inline filters if present.&lt;/p&gt;</description>
        </parameter>
        <parameter>
          <name>name</name>
          <type>java.lang.String</type>
          <typeJavadocUrl>apidocs/java/lang/String.html</typeJavadocUrl>
          <required>true</required>
          <editable>true</editable>
          <description>The name of the content package</description>
        </parameter>
        <parameter>
          <name>outputTimestamp</name>
          <type>java.lang.String</type>
          <typeJavadocUrl>apidocs/java/lang/String.html</typeJavadocUrl>
          <since>1.1.0</since>
          <required>false</required>
          <editable>true</editable>
          <description>Timestamp for reproducible output archive entries, either formatted as ISO 8601 &lt;code&gt;yyyy-MM-dd&apos;T&apos;HH:mm:ssXXX&lt;/code&gt; or as an int representing seconds since the epoch (like &lt;a href=&quot;https://reproducible-builds.org/docs/source-date-epoch/&quot;&gt;SOURCE_DATE_EPOCH&lt;/a&gt;).</description>
        </parameter>
        <parameter>
          <name>packageDefinitionProperties</name>
          <type>java.util.Map</type>
          <typeJavadocUrl>apidocs/java/util/Map.html</typeJavadocUrl>
          <required>false</required>
          <editable>true</editable>
          <description>Specifies &lt;a href=&quot;https://jackrabbit.apache.org/filevault/packagedefinition.html&quot;&gt;JCR package definition properties&lt;/a&gt; to be serialized into the &lt;code&gt;META-INF/vault/definition/.content.xml&lt;/code&gt; file. Those are implementation-specific and not standardized by FileVault. Only non-namespaced string properties are allowed here. Properties canonically stored somewhere else (like package properties or filter rules) should not be set.</description>
        </parameter>
        <parameter>
          <name>packageType</name>
          <type>org.apache.jackrabbit.vault.packaging.PackageType</type>
          <typeJavadocUrl>apidocs/org/apache/jackrabbit/vault/packaging/PackageType.html</typeJavadocUrl>
          <required>false</required>
          <editable>true</editable>
          <description>Defines the content package type. This is either &apos;application&apos;, &apos;content&apos;, &apos;container&apos; or &apos;mixed&apos;. If omitted, it is calculated automatically based on filter definitions. Certain package types imply restrictions, for example, &apos;application&apos; and &apos;content&apos; packages are not allowed to contain sub packages or embedded bundles.&lt;br /&gt; Possible values: 
&lt;ul&gt;
 &lt;li&gt;&lt;code&gt;application&lt;/code&gt;: An application package consists purely of application content. It serializes entire subtrees with no inclusion or exclusion filters. it does not contain any subpackages nor OSGi configuration or bundles.&lt;/li&gt;
 &lt;li&gt;&lt;code&gt;content&lt;/code&gt;: A content package consists only of content and user defined configuration. It usually serializes entire subtrees but can contain inclusion or exclusion filters. it does not contain any subpackages nor OSGi configuration or bundles.&lt;/li&gt;
 &lt;li&gt;&lt;code&gt;container&lt;/code&gt;: A container package only contains sub packages and OSGi configuration and bundles. The container package is only used as container for deployment.&lt;/li&gt;
 &lt;li&gt;&lt;code&gt;mixed&lt;/code&gt;: Catch all type for a combination of the above.&lt;/li&gt;
&lt;/ul&gt;</description>
        </parameter>
        <parameter>
          <name>prefix</name>
          <type>java.lang.String</type>
          <typeJavadocUrl>apidocs/java/lang/String.html</typeJavadocUrl>
          <required>false</required>
          <editable>true</editable>
          <description>Adds a path prefix to all resources. Useful for shallower source trees. This does not apply to files in &lt;a href=&quot;#workDirectory&quot;&gt;&lt;code&gt;workDirectory&lt;/code&gt;&lt;/a&gt; nor &lt;a href=&quot;#metaInfVaultDirectory&quot;&gt;&lt;code&gt;metaInfVaultDirectory&lt;/code&gt;&lt;/a&gt; but e.g. is relevant for the default filter and for the jcr_root of the package. Must start with &quot;/&quot; if not empty. As separator only forward slashes are allowed. The trailing slash is automatically appended if not there.</description>
        </parameter>
        <parameter>
          <name>project</name>
          <type>org.apache.maven.project.MavenProject</type>
          <typeJavadocUrl>apidocs/org/apache/maven/project/MavenProject.html</typeJavadocUrl>
          <required>true</required>
          <editable>false</editable>
          <description>The Maven project.</description>
        </parameter>
        <parameter>
          <name>properties</name>
          <type>java.util.Properties</type>
          <typeJavadocUrl>apidocs/java/util/Properties.html</typeJavadocUrl>
          <required>false</required>
          <editable>true</editable>
          <description>Specifies additional &lt;a href=&quot;https://jackrabbit.apache.org/filevault/properties.html&quot;&gt;package properties&lt;/a&gt; to be set in the properties.xml file. These properties cannot overwrite the following predefined properties: 
&lt;p&gt;&lt;/p&gt;
&lt;table&gt;
 &lt;tbody&gt;
  &lt;tr&gt;
   &lt;td&gt;&lt;code&gt;group&lt;/code&gt;&lt;/td&gt;
   &lt;td&gt;Use &lt;i&gt;group&lt;/i&gt; parameter to set&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;&lt;code&gt;name&lt;/code&gt;&lt;/td&gt;
   &lt;td&gt;Use &lt;i&gt;name&lt;/i&gt; parameter to set&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;&lt;code&gt;version&lt;/code&gt;&lt;/td&gt;
   &lt;td&gt;Use &lt;i&gt;version&lt;/i&gt; parameter to set&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;&lt;code&gt;groupId&lt;/code&gt;&lt;/td&gt;
   &lt;td&gt;&lt;i&gt;groupId&lt;/i&gt; of the Maven project descriptor&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;&lt;code&gt;artifactId&lt;/code&gt;&lt;/td&gt;
   &lt;td&gt;&lt;i&gt;artifactId&lt;/i&gt; of the Maven project descriptor&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;&lt;code&gt;dependencies&lt;/code&gt;&lt;/td&gt;
   &lt;td&gt;Use &lt;i&gt;dependencies&lt;/i&gt; parameter to set&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;&lt;code&gt;createdBy&lt;/code&gt;&lt;/td&gt;
   &lt;td&gt;The value of the &lt;i&gt;user.name&lt;/i&gt; system property&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;&lt;code&gt;created&lt;/code&gt;&lt;/td&gt;
   &lt;td&gt;The current system time&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;&lt;code&gt;requiresRoot&lt;/code&gt;&lt;/td&gt;
   &lt;td&gt;Use &lt;i&gt;requiresRoot&lt;/i&gt; parameter to set&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;&lt;code&gt;allowIndexDefinitions&lt;/code&gt;&lt;/td&gt;
   &lt;td&gt;Use &lt;i&gt;allowIndexDefinitions&lt;/i&gt; parameter to set&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;&lt;code&gt;packagePath&lt;/code&gt;&lt;/td&gt;
   &lt;td&gt;Automatically generated from the group and package name&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;&lt;code&gt;packageType&lt;/code&gt;&lt;/td&gt;
   &lt;td&gt;Set via the package type parameter&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;&lt;code&gt;acHandling&lt;/code&gt;&lt;/td&gt;
   &lt;td&gt;Use &lt;i&gt;accessControlHandling&lt;/i&gt; parameter to set&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;&lt;code&gt;subPackageHandling&lt;/code&gt;&lt;/td&gt;
   &lt;td&gt;Use &lt;i&gt;subPackageHandlingEntries&lt;/i&gt; parameter to set&lt;/td&gt;
  &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;</description>
        </parameter>
        <parameter>
          <name>repoSession</name>
          <type>org.eclipse.aether.RepositorySystemSession</type>
          <typeJavadocUrl>apidocs/org/eclipse/aether/RepositorySystemSession.html</typeJavadocUrl>
          <required>true</required>
          <editable>false</editable>
          <description></description>
        </parameter>
        <parameter>
          <name>repositories</name>
          <type>java.util.List</type>
          <typeJavadocUrl>apidocs/java/util/List.html</typeJavadocUrl>
          <required>true</required>
          <editable>false</editable>
          <description></description>
        </parameter>
        <parameter>
          <name>requiresRoot</name>
          <type>boolean</type>
          <required>true</required>
          <editable>true</editable>
          <description>Defines whether the package requires an admin/privileged session for installation. This will become the &lt;code&gt;requiresRoot&lt;/code&gt; property of the properties.xml file.</description>
        </parameter>
        <parameter>
          <name>session</name>
          <type>org.apache.maven.execution.MavenSession</type>
          <typeJavadocUrl>apidocs/org/apache/maven/execution/MavenSession.html</typeJavadocUrl>
          <required>true</required>
          <editable>false</editable>
          <description>The Maven session.</description>
        </parameter>
        <parameter>
          <name>subPackageHandlingEntries</name>
          <type>java.util.List</type>
          <typeJavadocUrl>apidocs/java/util/List.html</typeJavadocUrl>
          <since>1.1.10</since>
          <required>false</required>
          <editable>true</editable>
          <description>Defines a list of sub package handling entries, which affect how sub packages are installed. Each entry has the following elements: 
&lt;ul&gt;
 &lt;li&gt;option, mandatory, one of the values from &lt;code&gt;org.apache.jackrabbit.vault.packaging.SubPackageHandling.Option&lt;/code&gt;&lt;!-- this link does not have javadoc linked --&gt;&lt;/li&gt;
 &lt;li&gt;groupName, optional, restricts the option to the given group name, if not set affects there is no package group restriction&lt;/li&gt;
 &lt;li&gt;packageName, optional, restricts the option to the given package name, if not set affects all package names&lt;/li&gt;
&lt;/ul&gt;</description>
        </parameter>
        <parameter>
          <name>subPackages</name>
          <type>org.apache.jackrabbit.filevault.maven.packaging.SubPackage[]</type>
          <typeJavadocUrl>apidocs/org/apache/jackrabbit/filevault/maven/packaging/SubPackage.html</typeJavadocUrl>
          <required>false</required>
          <editable>true</editable>
          <description>Defines the list of sub packages to be embedded in this package. The &lt;code&gt;SubPackage&lt;/code&gt; class represents one or multiple subpackage artifact dependencies from the project descriptor. Each &lt;code&gt;&amp;lt;subPackage&amp;gt;&lt;/code&gt; element may configure any of the following fields 
&lt;p&gt;&lt;/p&gt;
&lt;table&gt;
 &lt;tbody&gt;
  &lt;tr&gt;
   &lt;td&gt;&lt;code&gt;groupId&lt;/code&gt;&lt;/td&gt;
   &lt;td&gt;&lt;code&gt;String&lt;/code&gt;&lt;!-- this link does not have javadoc linked --&gt;&lt;/td&gt;
   &lt;td&gt;Filter criterion against the group id of a project dependency. A pattern as described below.&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;&lt;code&gt;artifactId&lt;/code&gt;&lt;/td&gt;
   &lt;td&gt;&lt;code&gt;String&lt;/code&gt;&lt;!-- this link does not have javadoc linked --&gt;&lt;/td&gt;
   &lt;td&gt;Filter criterion against the artifact id of a project dependency. A pattern as described below.&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;&lt;code&gt;scope&lt;/code&gt;&lt;/td&gt;
   &lt;td&gt;&lt;code&gt;org.apache.maven.artifact.resolver.filter.ScopeArtifactFilter&lt;/code&gt;&lt;!-- this link does not have javadoc linked --&gt;&lt;/td&gt;
   &lt;td&gt;Filter criterion against the &lt;a href=&quot;https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Scope&quot;&gt;scope of a project dependency&lt;/a&gt;. Possible values are 
    &lt;ul&gt;
     &lt;li&gt;&lt;code&gt;test&lt;/code&gt;, which allows every scope&lt;/li&gt;
     &lt;li&gt;&lt;code&gt;compile+runtime&lt;/code&gt; which allows every scope except &lt;code&gt;test&lt;/code&gt;&lt;/li&gt;
     &lt;li&gt;&lt;code&gt;runtime+system&lt;/code&gt; which allows every scope except &lt;code&gt;test&lt;/code&gt; and &lt;code&gt;provided&lt;/code&gt;&lt;/li&gt;
     &lt;li&gt;&lt;code&gt;compile&lt;/code&gt; which allows only scope &lt;code&gt;compile&lt;/code&gt;, &lt;code&gt;provided&lt;/code&gt; and &lt;code&gt;system&lt;/code&gt;&lt;/li&gt;
     &lt;li&gt;&lt;code&gt;runtime&lt;/code&gt; which only allows scope &lt;code&gt;runtime&lt;/code&gt; and &lt;code&gt;compile&lt;/code&gt;.&lt;/li&gt;
    &lt;/ul&gt;&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;&lt;code&gt;type&lt;/code&gt;&lt;/td&gt;
   &lt;td&gt;&lt;code&gt;String&lt;/code&gt;&lt;!-- this link does not have javadoc linked --&gt;&lt;/td&gt;
   &lt;td&gt;Filter criterion against the type of a project dependency. A pattern as described below.&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;&lt;code&gt;classifier&lt;/code&gt;&lt;/td&gt;
   &lt;td&gt;&lt;code&gt;String&lt;/code&gt;&lt;!-- this link does not have javadoc linked --&gt;&lt;/td&gt;
   &lt;td&gt;Filter criterion against the classifier of a project dependency. A pattern as described below.&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;&lt;code&gt;filter&lt;/code&gt;&lt;/td&gt;
   &lt;td&gt;&lt;code&gt;Boolean&lt;/code&gt;&lt;!-- this link does not have javadoc linked --&gt;&lt;/td&gt;
   &lt;td&gt;If set to &lt;code&gt;true&lt;/code&gt; adds the embedded artifact location to the package&apos;s filter. Default = &lt;code&gt;false&lt;/code&gt;.&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;&lt;code&gt;isAllVersionsFilter&lt;/code&gt;&lt;/td&gt;
   &lt;td&gt;&lt;code&gt;Boolean&lt;/code&gt;&lt;!-- this link does not have javadoc linked --&gt;&lt;/td&gt;
   &lt;td&gt;If &lt;code&gt;filter&lt;/code&gt; is &lt;code&gt;true&lt;/code&gt; and this is &lt;code&gt;true&lt;/code&gt; as well, the filter entry will contain all versions of the same artifact (by creating an according filter pattern). Default = &lt;code&gt;false&lt;/code&gt;.&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;&lt;code&gt;excludeTransitive&lt;/code&gt;&lt;/td&gt;
   &lt;td&gt;&lt;code&gt;Boolean&lt;/code&gt;&lt;!-- this link does not have javadoc linked --&gt;&lt;/td&gt;
   &lt;td&gt;If &lt;code&gt;true&lt;/code&gt; only filters on direct dependencies (not on transitive ones). Default = &lt;code&gt;false&lt;/code&gt;.&lt;/td&gt;
  &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt; All fields are optional. All filter criteria is concatenated with AND logic (i.e. every criterion must match for a specific dependency to be embedded as a sub package). &lt;br /&gt; All filter patterns follow the format &lt;code&gt;&amp;lt;filter&amp;gt;{,&amp;lt;filter&amp;gt;}&lt;/code&gt;. Each &lt;code&gt;filter&lt;/code&gt; within a filter pattern is a string which is either an exclude (if it starts with a &lt;code&gt;~&lt;/code&gt;) or an include otherwise. If the first &lt;code&gt;filter&lt;/code&gt; is an include the pattern acts as whitelist, otherwise as blacklist. The last matching filter determines the outcome. Only matching dependencies are being considered for being embedded. &lt;br /&gt; &lt;i&gt;The difference between &lt;a href=&quot;#embeddeds&quot;&gt;&lt;code&gt;embeddeds&lt;/code&gt;&lt;/a&gt; and &lt;a href=&quot;#subPackages&quot;&gt;&lt;code&gt;subPackages&lt;/code&gt;&lt;/a&gt; is that for the former an explicit target is given while for the latter the target is being computed from the artifact&apos;s vault property file.&lt;/i&gt;</description>
        </parameter>
        <parameter>
          <name>thumbnailImage</name>
          <type>java.io.File</type>
          <typeJavadocUrl>apidocs/java/io/File.html</typeJavadocUrl>
          <since>1.0.1</since>
          <required>false</required>
          <editable>true</editable>
          <description>Optional reference to PNG image that should be used as thumbnail for the content package. Should have a width of 64 pixels.</description>
        </parameter>
        <parameter>
          <name>version</name>
          <type>java.lang.String</type>
          <typeJavadocUrl>apidocs/java/lang/String.html</typeJavadocUrl>
          <required>true</required>
          <editable>true</editable>
          <description>The version of the content package.</description>
        </parameter>
        <parameter>
          <name>workDirectory</name>
          <type>java.io.File</type>
          <typeJavadocUrl>apidocs/java/io/File.html</typeJavadocUrl>
          <required>true</required>
          <editable>true</editable>
          <description>The output directory for goal &quot;generate-metadata&quot; and additional input directory containing the metadata to be packaged up into the content package for goal &quot;package&quot;. The directory name is suffixed with &lt;code&gt;-&amp;lt;classifier&amp;gt;&lt;/code&gt; in case a &lt;a href=&quot;#classifier&quot;&gt;&lt;code&gt;classifier&lt;/code&gt;&lt;/a&gt; is used. In case of the &quot;package&quot; goal this falls back to the non-suffixed directory name in case the one with suffix does not exist.</description>
        </parameter>
      </parameters>
      <configuration>
        <accessControlHandling implementation="org.apache.jackrabbit.vault.fs.io.AccessControlHandling">${vault.acHandling}</accessControlHandling>
        <allowIndexDefinitions implementation="boolean" default-value="false">${vault.allowIndexDefinitions}</allowIndexDefinitions>
        <classifier implementation="java.lang.String">${vault.classifier}</classifier>
        <dependencies implementation="java.util.Collection">${vault.dependencies}</dependencies>
        <embeddedTarget implementation="java.lang.String">${vault.embeddedTarget}</embeddedTarget>
        <failOnEmptyFilter implementation="boolean" default-value="true">${vault.failOnEmptyFilter}</failOnEmptyFilter>
        <failOnMissingEmbed implementation="boolean" default-value="false">${vault.failOnMissingEmbed}</failOnMissingEmbed>
        <generatedImportPackage implementation="java.io.File" default-value="${project.build.directory}/vault-generated-import.txt">${vault.generatedImportPackage}</generatedImportPackage>
        <group implementation="java.lang.String" default-value="${project.groupId}">${vault.group}</group>
        <importPackage implementation="java.lang.String" default-value="-org.apache.sling.scripting.sightly.compiler.expression.nodes,-org.apache.sling.scripting.sightly.java.compiler,-org.apache.sling.scripting.sightly.render">${vault.importPackage}</importPackage>
        <metaInfVaultDirectory implementation="java.io.File[]" default-value="${project.basedir}/META-INF/vault,${project.basedir}/src/main/META-INF/vault,${project.basedir}/src/main/content/META-INF/vault,${project.basedir}/src/content/META-INF/vault">${vault.metaInfVaultDirectory}</metaInfVaultDirectory>
        <name implementation="java.lang.String" default-value="${project.artifactId}">${vault.name}</name>
        <outputTimestamp implementation="java.lang.String" default-value="${project.build.outputTimestamp}"/>
        <packageType implementation="org.apache.jackrabbit.vault.packaging.PackageType">${vault.packageType}</packageType>
        <prefix implementation="java.lang.String" default-value="">${vault.prefix}</prefix>
        <project implementation="org.apache.maven.project.MavenProject">${project}</project>
        <repoSession implementation="org.eclipse.aether.RepositorySystemSession" default-value="${repositorySystemSession}"/>
        <repositories implementation="java.util.List" default-value="${project.remoteProjectRepositories}"/>
        <requiresRoot implementation="boolean" default-value="false">${vault.requiresRoot}</requiresRoot>
        <session implementation="org.apache.maven.execution.MavenSession">${session}</session>
        <version implementation="java.lang.String" default-value="${project.version}">${vault.version}</version>
        <workDirectory implementation="java.io.File" default-value="${project.build.directory}/vault-work"/>
      </configuration>
      <requirements>
        <requirement>
          <role>org.sonatype.plexus.build.incremental.BuildContext</role>
          <field-name>buildContext</field-name>
        </requirement>
        <requirement>
          <role>org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout</role>
          <role-hint>default</role-hint>
          <field-name>embedArtifactLayout</field-name>
        </requirement>
        <requirement>
          <role>org.eclipse.aether.RepositorySystem</role>
          <field-name>repoSystem</field-name>
        </requirement>
      </requirements>
    </mojo>
    <mojo>
      <goal>help</goal>
      <description>Display help information on filevault-package-maven-plugin.&lt;br /&gt; Call &lt;code&gt;mvn filevault-package:help -Ddetail=true -Dgoal=&amp;lt;goal-name&amp;gt;&lt;/code&gt; to display parameter details.</description>
      <requiresDirectInvocation>false</requiresDirectInvocation>
      <requiresProject>false</requiresProject>
      <requiresReports>false</requiresReports>
      <aggregator>false</aggregator>
      <requiresOnline>false</requiresOnline>
      <inheritedByDefault>true</inheritedByDefault>
      <implementation>org.apache.jackrabbit.filevault_package_maven_plugin.HelpMojo</implementation>
      <language>java</language>
      <instantiationStrategy>per-lookup</instantiationStrategy>
      <executionStrategy>once-per-session</executionStrategy>
      <threadSafe>true</threadSafe>
      <parameters>
        <parameter>
          <name>detail</name>
          <type>boolean</type>
          <required>false</required>
          <editable>true</editable>
          <description>If &lt;code&gt;true&lt;/code&gt;, display all settable properties for each goal.</description>
        </parameter>
        <parameter>
          <name>goal</name>
          <type>java.lang.String</type>
          <typeJavadocUrl>apidocs/java/lang/String.html</typeJavadocUrl>
          <required>false</required>
          <editable>true</editable>
          <description>The name of the goal for which to show help. If unspecified, all goals will be displayed.</description>
        </parameter>
        <parameter>
          <name>indentSize</name>
          <type>int</type>
          <required>false</required>
          <editable>true</editable>
          <description>The number of spaces per indentation level, should be positive.</description>
        </parameter>
        <parameter>
          <name>lineLength</name>
          <type>int</type>
          <required>false</required>
          <editable>true</editable>
          <description>The maximum length of a display line, should be positive.</description>
        </parameter>
      </parameters>
      <configuration>
        <detail implementation="boolean" default-value="false">${detail}</detail>
        <goal implementation="java.lang.String">${goal}</goal>
        <indentSize implementation="int" default-value="2">${indentSize}</indentSize>
        <lineLength implementation="int" default-value="80">${lineLength}</lineLength>
      </configuration>
    </mojo>
    <mojo>
      <goal>package</goal>
      <description>Builds a content package. Uses the metadata generated by and embedded artifacts (like subpackages or OSGi bundles) configured in a preceding execution of goal &lt;code&gt;generate-metadata&lt;/code&gt;. 
&lt;p&gt;&lt;i&gt;This goal is executed/bound by default for Maven modules of type &lt;code&gt;content-package&lt;/code&gt;.&lt;/i&gt;&lt;/p&gt;</description>
      <requiresDependencyResolution>compile</requiresDependencyResolution>
      <requiresDirectInvocation>false</requiresDirectInvocation>
      <requiresProject>true</requiresProject>
      <requiresReports>false</requiresReports>
      <aggregator>false</aggregator>
      <requiresOnline>false</requiresOnline>
      <inheritedByDefault>true</inheritedByDefault>
      <phase>package</phase>
      <implementation>org.apache.jackrabbit.filevault.maven.packaging.mojo.VaultMojo</implementation>
      <language>java</language>
      <instantiationStrategy>per-lookup</instantiationStrategy>
      <executionStrategy>once-per-session</executionStrategy>
      <threadSafe>true</threadSafe>
      <parameters>
        <parameter>
          <name>addDefaultExcludes</name>
          <type>boolean</type>
          <since>1.1.0</since>
          <required>false</required>
          <editable>true</editable>
          <description>By default certain metadata files are excluded which means they will not be copied into the package. If you need them for a particular reason you can do that by setting this parameter to &lt;code&gt;false&lt;/code&gt;. This means all files matching the following &lt;a href=&quot;https://ant.apache.org/manual/dirtasks.html#patterns&quot;&gt;Ant patterns&lt;/a&gt; won&apos;t be copied by default. 
&lt;ul&gt;
 &lt;li&gt;Misc: **/*~, **/#*#, **/.#*, **/%*%, **/._*&lt;/li&gt;
 &lt;li&gt;CVS: **/CVS, **/CVS/**, **/.cvsignore&lt;/li&gt;
 &lt;li&gt;SVN: **/.svn, **/.svn/**&lt;/li&gt;
 &lt;li&gt;GNU: **/.arch-ids, **/.arch-ids/**&lt;/li&gt;
 &lt;li&gt;Bazaar: **/.bzr, **/.bzr/**&lt;/li&gt;
 &lt;li&gt;SurroundSCM: **/.MySCMServerInfo&lt;/li&gt;
 &lt;li&gt;Mac: **/.DS_Store&lt;/li&gt;
 &lt;li&gt;Serena Dimension: **/.metadata, **/.metadata/**&lt;/li&gt;
 &lt;li&gt;Mercurial: **/.hg, **/.hg/**&lt;/li&gt;
 &lt;li&gt;GIT: **/.git, **/.git/**&lt;/li&gt;
 &lt;li&gt;Bitkeeper: **/BitKeeper, **/BitKeeper/**, **/ChangeSet, **/ChangeSet/**&lt;/li&gt;
 &lt;li&gt;Darcs: **/_darcs, **/_darcs/**, **/.darcsrepo, **/.darcsrepo/****/-darcs-backup*, **/.darcs-temp-mail&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;&lt;strong&gt;See also:&lt;/strong&gt; org.codehaus.plexus.util.AbstractScanner.DEFAULTEXCLUDES&lt;!-- this link does not have javadoc linked --&gt;</description>
        </parameter>
        <parameter>
          <name>archive</name>
          <type>org.apache.maven.archiver.MavenArchiveConfiguration</type>
          <typeJavadocUrl>apidocs/org/apache/maven/archiver/MavenArchiveConfiguration.html</typeJavadocUrl>
          <required>false</required>
          <editable>true</editable>
          <description>The archive configuration to use. See &lt;a href=&quot;http://maven.apache.org/shared/maven-archiver/index.html&quot;&gt;the documentation for Maven Archiver&lt;/a&gt;. All settings related to manifest are not relevant as this gets overwritten by the manifest in &lt;a href=&quot;#workDirectory&quot;&gt;&lt;code&gt;workDirectory&lt;/code&gt;&lt;/a&gt;</description>
        </parameter>
        <parameter>
          <name>builtContentDirectory</name>
          <type>java.io.File</type>
          <typeJavadocUrl>apidocs/java/io/File.html</typeJavadocUrl>
          <deprecated>Use &lt;a href=&quot;#jcrRootSourceDirectory&quot;&gt;&lt;code&gt;jcrRootSourceDirectory&lt;/code&gt;&lt;/a&gt; instead.</deprecated>
          <required>false</required>
          <editable>true</editable>
          <description>The directory containing the content to be packaged up into the content package.</description>
        </parameter>
        <parameter>
          <name>classifier</name>
          <type>java.lang.String</type>
          <typeJavadocUrl>apidocs/java/lang/String.html</typeJavadocUrl>
          <since>1.1.4</since>
          <required>false</required>
          <editable>true</editable>
          <description>Optional classifier to add to the generated package. If given, the artifact will be attached as a supplemental artifact having this classifier. Also all generated metadata will be pushed to &lt;code&gt;&amp;lt;workDirectory&amp;gt;-&amp;lt;classifier&amp;gt;&lt;/code&gt; and will preferably be looked up from there. In addition the embedded file names will be exchanged leveraging a classifier specific property.</description>
        </parameter>
        <parameter>
          <name>delimiters</name>
          <type>java.util.LinkedHashSet</type>
          <typeJavadocUrl>apidocs/java/util/LinkedHashSet.html</typeJavadocUrl>
          <since>1.1.0</since>
          <required>false</required>
          <editable>true</editable>
          <description>&lt;p&gt;Set of delimiters for expressions to filter within the resources. These delimiters are specified in the form &apos;beginToken*endToken&apos;. If no &apos;*&apos; is given, the delimiter is assumed to be the same for start and end.&lt;/p&gt;
&lt;p&gt;So, the default filtering delimiters might be specified as:&lt;/p&gt;
&lt;pre&gt;&amp;lt;delimiters&amp;gt;
  &amp;lt;delimiter&amp;gt;${*}&amp;lt;/delimiter&amp;gt;
  &amp;lt;delimiter&amp;gt;@&amp;lt;/delimiter&amp;gt;
&amp;lt;/delimiters&amp;gt;
&lt;/pre&gt;
&lt;p&gt;Since the &apos;@&apos; delimiter is the same on both ends, we don&apos;t need to specify &apos;@*@&apos; (though we can).&lt;/p&gt;</description>
        </parameter>
        <parameter>
          <name>enableJcrRootFiltering</name>
          <type>boolean</type>
          <since>1.1.0</since>
          <required>false</required>
          <editable>true</editable>
          <description>Enables resource filtering on the &lt;a href=&quot;#jcrRootSourceDirectory&quot;&gt;&lt;code&gt;jcrRootSourceDirectory&lt;/code&gt;&lt;/a&gt; source files similar to what the &lt;a href=&quot;https://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html&quot;&gt;maven-resources-plugin&lt;/a&gt; does. It is recommended to limit filtering with &lt;a href=&quot;#filteredFilePatterns&quot;&gt;&lt;code&gt;filteredFilePatterns&lt;/code&gt;&lt;/a&gt; and &lt;a href=&quot;#nonFilteredFileExtensions&quot;&gt;&lt;code&gt;nonFilteredFileExtensions&lt;/code&gt;&lt;/a&gt;.</description>
        </parameter>
        <parameter>
          <name>enableMetaInfFiltering</name>
          <type>boolean</type>
          <since>1.1.0</since>
          <required>false</required>
          <editable>true</editable>
          <description>Enables resource filtering on the meta-inf source files similar to what the &lt;a href=&quot;https://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html&quot;&gt;maven-resources-plugin&lt;/a&gt; does. It is recommended to limit filtering with &lt;a href=&quot;#filteredFilePatterns&quot;&gt;&lt;code&gt;filteredFilePatterns&lt;/code&gt;&lt;/a&gt; and &lt;a href=&quot;#nonFilteredFileExtensions&quot;&gt;&lt;code&gt;nonFilteredFileExtensions&lt;/code&gt;&lt;/a&gt;.</description>
        </parameter>
        <parameter>
          <name>escapedBackslashesInFilePath</name>
          <type>boolean</type>
          <since>1.1.0</since>
          <required>false</required>
          <editable>true</editable>
          <description>To escape interpolated values with Windows path &lt;code&gt;c:\foo\bar&lt;/code&gt; will be replaced with &lt;code&gt;c:\\foo\\bar&lt;/code&gt;.</description>
        </parameter>
        <parameter>
          <name>escapeString</name>
          <type>java.lang.String</type>
          <typeJavadocUrl>apidocs/java/lang/String.html</typeJavadocUrl>
          <since>1.1.0</since>
          <required>false</required>
          <editable>true</editable>
          <description>Expression preceded with this String won&apos;t be interpolated. &lt;code&gt;\${foo}&lt;/code&gt; will be replaced with &lt;code&gt;${foo}&lt;/code&gt;.</description>
        </parameter>
        <parameter>
          <name>excludes</name>
          <type>java.util.Set</type>
          <typeJavadocUrl>apidocs/java/util/Set.html</typeJavadocUrl>
          <required>true</required>
          <editable>true</editable>
          <description>The file name patterns to exclude (in addition to the default ones mentioned at &lt;a href=&quot;#addDefaultExcludes&quot;&gt;&lt;code&gt;addDefaultExcludes&lt;/code&gt;&lt;/a&gt;. The format of each pattern is described in &lt;code&gt;org.codehaus.plexus.util.DirectoryScanner&lt;/code&gt;&lt;!-- this link does not have javadoc linked --&gt;. The comparison is against the path relative to the according filter root. Since this is hardly predictable it is recommended to use only filename/directory name patterns here but not take into account file system hierarchies! 
&lt;p&gt;Each value is either a regex pattern if enclosed within &lt;code&gt;%regex[&lt;/code&gt; and &lt;code&gt;]&lt;/code&gt;, otherwise an &lt;a href=&quot;https://ant.apache.org/manual/dirtasks.html#patterns&quot;&gt;Ant pattern&lt;/a&gt;.&lt;/p&gt;</description>
        </parameter>
        <parameter>
          <name>failOnDuplicateEntries</name>
          <type>boolean</type>
          <required>true</required>
          <editable>true</editable>
          <description>Set to &lt;code&gt;false&lt;/code&gt; to not fail the build in case of files/folders being added to the resulting package more than once. Usually this indicates overlapping with embedded files or overlapping filter rules.</description>
        </parameter>
        <parameter>
          <name>failOnUncoveredSourceFiles</name>
          <type>boolean</type>
          <required>true</required>
          <editable>true</editable>
          <description>Set to &lt;code&gt;true&lt;/code&gt; to fail the build in case of files are being contained in the &lt;code&gt;jcrRootSourceDirectory&lt;/code&gt; which are not covered by the filter rules and therefore would not end up in the package.</description>
        </parameter>
        <parameter>
          <name>filteredFilePatterns</name>
          <type>java.util.List</type>
          <typeJavadocUrl>apidocs/java/util/List.html</typeJavadocUrl>
          <since>1.1.8</since>
          <required>false</required>
          <editable>true</editable>
          <description>Restricts the files which should be filtered to the ones having matching one of the given &lt;a href=&quot;http://ant.apache.org/manual/dirtasks.html#patterns&quot;&gt;Ant patterns&lt;/a&gt;. Evaluated before &lt;a href=&quot;#nonFilteredFileExtensions&quot;&gt;&lt;code&gt;nonFilteredFileExtensions&lt;/code&gt;&lt;/a&gt;. All patterns are relative to the root paths (given through the filter.xml root entries or the META-INF directory). If empty or not set all files except for the ones from &lt;a href=&quot;#nonFilteredFileExtensions&quot;&gt;&lt;code&gt;nonFilteredFileExtensions&lt;/code&gt;&lt;/a&gt; are filtered.</description>
        </parameter>
        <parameter>
          <name>filterFiles</name>
          <type>java.util.List</type>
          <typeJavadocUrl>apidocs/java/util/List.html</typeJavadocUrl>
          <since>1.1.0</since>
          <required>false</required>
          <editable>true</editable>
          <description>The list of extra filter properties files to be used along with System properties, project properties, and filter properties files specified in the POM build/filters section, which should be used for the filtering during the current mojo execution.</description>
        </parameter>
        <parameter>
          <name>finalName</name>
          <type>java.lang.String</type>
          <typeJavadocUrl>apidocs/java/lang/String.html</typeJavadocUrl>
          <required>true</required>
          <editable>true</editable>
          <description>The name of the generated package ZIP file without the &quot;.zip&quot; file extension. The optional classifier parameter will be appended to the name of the package.</description>
        </parameter>
        <parameter>
          <name>jcrRootSourceDirectory</name>
          <type>java.io.File[]</type>
          <typeJavadocUrl>apidocs/java/io/File.html</typeJavadocUrl>
          <required>true</required>
          <editable>true</editable>
          <description>The directory that contains the jcr_root of the content. Multiple directories can be specified as a comma separated list, which will act as a search path and cause the plugin to look for the first existing directory.</description>
        </parameter>
        <parameter>
          <name>metaInfDirectory</name>
          <type>java.io.File</type>
          <typeJavadocUrl>apidocs/java/io/File.html</typeJavadocUrl>
          <required>false</required>
          <editable>true</editable>
          <description>The directory that contains additional files and folders to end up in the package&apos;s META-INF folder. Every file and subfolder is considered except for the subfolder named &lt;code&gt;vault&lt;/code&gt; and a file named &lt;code&gt;MANIFEST.MF&lt;/code&gt;.</description>
        </parameter>
        <parameter>
          <name>metaInfVaultDirectory</name>
          <type>java.io.File[]</type>
          <typeJavadocUrl>apidocs/java/io/File.html</typeJavadocUrl>
          <required>true</required>
          <editable>true</editable>
          <description>The directory that contains the META-INF/vault. Multiple directories can be specified as a comma separated list, which will act as a search path and cause the plugin to look for the first existing directory. 
&lt;p&gt;This directory is added as fileset to the package archiver before the the &lt;a href=&quot;#workDirectory&quot;&gt;&lt;code&gt;workDirectory&lt;/code&gt;&lt;/a&gt;. This means that files specified in this directory have precedence over the one present in the &lt;a href=&quot;#workDirectory&quot;&gt;&lt;code&gt;workDirectory&lt;/code&gt;&lt;/a&gt;. For example, if this directory contains a &lt;code&gt;properties.xml&lt;/code&gt; it will not be overwritten by the generated one. A special case is the &lt;code&gt;filter.xml&lt;/code&gt; which will be merged with inline filters if present.&lt;/p&gt;</description>
        </parameter>
        <parameter>
          <name>nonFilteredFileExtensions</name>
          <type>java.util.List</type>
          <typeJavadocUrl>apidocs/java/util/List.html</typeJavadocUrl>
          <since>1.1.0</since>
          <required>false</required>
          <editable>true</editable>
          <description>Additional list of file extensions that should not be filtered, e.g. binaries. Already predefined as extensions which should never be filtered are: jpg, jpeg, gif, bmp, png, ico. Instead of using this deny list approach for binary files and others which should not be filtered, consider using an allow list via &lt;a href=&quot;#filteredFilePatterns&quot;&gt;&lt;code&gt;filteredFilePatterns&lt;/code&gt;&lt;/a&gt; instead.</description>
        </parameter>
        <parameter>
          <name>outputDirectory</name>
          <type>java.io.File</type>
          <typeJavadocUrl>apidocs/java/io/File.html</typeJavadocUrl>
          <required>true</required>
          <editable>true</editable>
          <description>Directory in which the built content package will be output.</description>
        </parameter>
        <parameter>
          <name>outputTimestamp</name>
          <type>java.lang.String</type>
          <typeJavadocUrl>apidocs/java/lang/String.html</typeJavadocUrl>
          <since>1.1.0</since>
          <required>false</required>
          <editable>true</editable>
          <description>Timestamp for reproducible output archive entries, either formatted as ISO 8601 &lt;code&gt;yyyy-MM-dd&apos;T&apos;HH:mm:ssXXX&lt;/code&gt; or as an int representing seconds since the epoch (like &lt;a href=&quot;https://reproducible-builds.org/docs/source-date-epoch/&quot;&gt;SOURCE_DATE_EPOCH&lt;/a&gt;).</description>
        </parameter>
        <parameter>
          <name>prefix</name>
          <type>java.lang.String</type>
          <typeJavadocUrl>apidocs/java/lang/String.html</typeJavadocUrl>
          <required>false</required>
          <editable>true</editable>
          <description>Adds a path prefix to all resources. Useful for shallower source trees. This does not apply to files in &lt;a href=&quot;#workDirectory&quot;&gt;&lt;code&gt;workDirectory&lt;/code&gt;&lt;/a&gt; nor &lt;a href=&quot;#metaInfVaultDirectory&quot;&gt;&lt;code&gt;metaInfVaultDirectory&lt;/code&gt;&lt;/a&gt; but e.g. is relevant for the default filter and for the jcr_root of the package. Must start with &quot;/&quot; if not empty. As separator only forward slashes are allowed. The trailing slash is automatically appended if not there.</description>
        </parameter>
        <parameter>
          <name>project</name>
          <type>org.apache.maven.project.MavenProject</type>
          <typeJavadocUrl>apidocs/org/apache/maven/project/MavenProject.html</typeJavadocUrl>
          <required>true</required>
          <editable>false</editable>
          <description>The Maven project.</description>
        </parameter>
        <parameter>
          <name>resourceEncoding</name>
          <type>java.lang.String</type>
          <typeJavadocUrl>apidocs/java/lang/String.html</typeJavadocUrl>
          <since>1.1.0</since>
          <required>false</required>
          <editable>true</editable>
          <description>The character encoding scheme to be applied when filtering resources.</description>
        </parameter>
        <parameter>
          <name>session</name>
          <type>org.apache.maven.execution.MavenSession</type>
          <typeJavadocUrl>apidocs/org/apache/maven/execution/MavenSession.html</typeJavadocUrl>
          <required>false</required>
          <editable>false</editable>
          <description></description>
        </parameter>
        <parameter>
          <name>supportMultiLineFiltering</name>
          <type>boolean</type>
          <since>1.1.0</since>
          <required>false</required>
          <editable>true</editable>
          <description>Stop searching endToken at the end of line when filtering is applied.</description>
        </parameter>
        <parameter>
          <name>useDefaultDelimiters</name>
          <type>boolean</type>
          <since>1.1.0</since>
          <required>false</required>
          <editable>true</editable>
          <description>Use default delimiters in addition to custom delimiters, if any.</description>
        </parameter>
        <parameter>
          <name>workDirectory</name>
          <type>java.io.File</type>
          <typeJavadocUrl>apidocs/java/io/File.html</typeJavadocUrl>
          <required>true</required>
          <editable>true</editable>
          <description>The output directory for goal &quot;generate-metadata&quot; and additional input directory containing the metadata to be packaged up into the content package for goal &quot;package&quot;. The directory name is suffixed with &lt;code&gt;-&amp;lt;classifier&amp;gt;&lt;/code&gt; in case a &lt;a href=&quot;#classifier&quot;&gt;&lt;code&gt;classifier&lt;/code&gt;&lt;/a&gt; is used. In case of the &quot;package&quot; goal this falls back to the non-suffixed directory name in case the one with suffix does not exist.</description>
        </parameter>
      </parameters>
      <configuration>
        <addDefaultExcludes implementation="boolean" default-value="true"/>
        <classifier implementation="java.lang.String">${vault.classifier}</classifier>
        <delimiters implementation="java.util.LinkedHashSet">${vault.delimiters}</delimiters>
        <enableJcrRootFiltering implementation="boolean" default-value="false">${vault.enableJcrRootFiltering}</enableJcrRootFiltering>
        <enableMetaInfFiltering implementation="boolean" default-value="false">${vault.enableMetaInfFiltering}</enableMetaInfFiltering>
        <escapedBackslashesInFilePath implementation="boolean" default-value="false">${vault.escapedBackslashesInFilePath}</escapedBackslashesInFilePath>
        <escapeString implementation="java.lang.String">${vault.escapeString}</escapeString>
        <excludes implementation="java.util.Set" default-value="**/.vlt,**/.vltignore,**/.gitignore">${vault.excludes}</excludes>
        <failOnDuplicateEntries implementation="boolean" default-value="true">${vault.failOnDuplicateEntries}</failOnDuplicateEntries>
        <failOnUncoveredSourceFiles implementation="boolean" default-value="true">${vault.failOnUncoveredSourceFiles}</failOnUncoveredSourceFiles>
        <filteredFilePatterns implementation="java.util.List">${vault.filteredFilePatterns}</filteredFilePatterns>
        <filterFiles implementation="java.util.List">${vault.filters}</filterFiles>
        <finalName implementation="java.lang.String" default-value="${project.build.finalName}">${vault.finalName}</finalName>
        <jcrRootSourceDirectory implementation="java.io.File[]" default-value="${project.basedir}/jcr_root,${project.basedir}/src/main/jcr_root,${project.basedir}/src/main/content/jcr_root,${project.basedir}/src/content/jcr_root,${project.build.outputDirectory}">${vault.jcrRootSourceDirectory}</jcrRootSourceDirectory>
        <metaInfDirectory implementation="java.io.File">${vault.metaInfDirectory}</metaInfDirectory>
        <metaInfVaultDirectory implementation="java.io.File[]" default-value="${project.basedir}/META-INF/vault,${project.basedir}/src/main/META-INF/vault,${project.basedir}/src/main/content/META-INF/vault,${project.basedir}/src/content/META-INF/vault">${vault.metaInfVaultDirectory}</metaInfVaultDirectory>
        <nonFilteredFileExtensions implementation="java.util.List">${vault.nonFilteredFileExtensions}</nonFilteredFileExtensions>
        <outputDirectory implementation="java.io.File" default-value="${project.build.directory}">${vault.outputDirectory}</outputDirectory>
        <outputTimestamp implementation="java.lang.String" default-value="${project.build.outputTimestamp}"/>
        <prefix implementation="java.lang.String" default-value="">${vault.prefix}</prefix>
        <project implementation="org.apache.maven.project.MavenProject">${project}</project>
        <resourceEncoding implementation="java.lang.String" default-value="${project.build.sourceEncoding}">${vault.resourceEncoding}</resourceEncoding>
        <session implementation="org.apache.maven.execution.MavenSession" default-value="${session}"/>
        <supportMultiLineFiltering implementation="boolean" default-value="false">${vault.supportMultiLineFiltering}</supportMultiLineFiltering>
        <useDefaultDelimiters implementation="boolean" default-value="true">${vault.useDefaultDelimiters}</useDefaultDelimiters>
        <workDirectory implementation="java.io.File" default-value="${project.build.directory}/vault-work"/>
      </configuration>
      <requirements>
        <requirement>
          <role>org.apache.maven.artifact.handler.manager.ArtifactHandlerManager</role>
          <field-name>artifactHandlerManager</field-name>
        </requirement>
        <requirement>
          <role>org.apache.maven.shared.filtering.MavenResourcesFiltering</role>
          <role-hint>default</role-hint>
          <field-name>mavenResourcesFiltering</field-name>
        </requirement>
        <requirement>
          <role>org.apache.maven.project.MavenProjectHelper</role>
          <field-name>projectHelper</field-name>
        </requirement>
      </requirements>
    </mojo>
    <mojo>
      <goal>validate-files</goal>
      <description>Validates individual files with all registered validators. This is only active for incremental builds (i.e. inside m2e) or when mojo &quot;validate-package&quot; is not executed in the current Maven execution. 
&lt;p&gt;&lt;i&gt;This goal is executed/bound by default for Maven modules of type &lt;code&gt;content-package&lt;/code&gt;.&lt;/i&gt;&lt;/p&gt;&lt;br /&gt;&lt;strong&gt;See also:&lt;/strong&gt; &lt;a href=&quot;https://jackrabbit.apache.org/filevault-package-maven-plugin/validators.html&quot;&gt;Validators&lt;/a&gt;</description>
      <requiresDependencyResolution>compile</requiresDependencyResolution>
      <requiresDirectInvocation>false</requiresDirectInvocation>
      <requiresProject>true</requiresProject>
      <requiresReports>false</requiresReports>
      <aggregator>false</aggregator>
      <requiresOnline>false</requiresOnline>
      <inheritedByDefault>true</inheritedByDefault>
      <phase>process-test-sources</phase>
      <implementation>org.apache.jackrabbit.filevault.maven.packaging.mojo.ValidateFilesMojo</implementation>
      <language>java</language>
      <instantiationStrategy>per-lookup</instantiationStrategy>
      <executionStrategy>once-per-session</executionStrategy>
      <since>1.1.0</since>
      <threadSafe>true</threadSafe>
      <parameters>
        <parameter>
          <name>builtContentDirectory</name>
          <type>java.io.File</type>
          <typeJavadocUrl>apidocs/java/io/File.html</typeJavadocUrl>
          <deprecated>No reason given</deprecated>
          <required>false</required>
          <editable>true</editable>
          <description>The directory containing the content to be packaged up into the content package. This property is deprecated; use &lt;a href=&quot;#jcrRootSourceDirectory&quot;&gt;&lt;code&gt;jcrRootSourceDirectory&lt;/code&gt;&lt;/a&gt; instead.</description>
        </parameter>
        <parameter>
          <name>classifier</name>
          <type>java.lang.String</type>
          <typeJavadocUrl>apidocs/java/lang/String.html</typeJavadocUrl>
          <required>false</required>
          <editable>true</editable>
          <description>If given validates files built for the given classifier. This modifies the &lt;a href=&quot;#workDirectory&quot;&gt;&lt;code&gt;workDirectory&lt;/code&gt;&lt;/a&gt; and appends the suffix &lt;code&gt;-&amp;lt;classifier&amp;gt;&lt;/code&gt; to it.</description>
        </parameter>
        <parameter>
          <name>csvReportFile</name>
          <type>java.io.File</type>
          <typeJavadocUrl>apidocs/java/io/File.html</typeJavadocUrl>
          <required>false</required>
          <editable>true</editable>
          <description>The file where to write a report of all found validation violations (warnings and errors) in CSV format as defined in &lt;a href=&quot;https://tools.ietf.org/html/rfc4180&quot;&gt;RFC 4180&lt;/a&gt;. The generated file is using UTF-8 character encoding. No CSV report is written if this parameter is not set (default).</description>
        </parameter>
        <parameter>
          <name>dependencies</name>
          <type>java.util.Collection</type>
          <typeJavadocUrl>apidocs/java/util/Collection.html</typeJavadocUrl>
          <required>false</required>
          <editable>true</editable>
          <description>Defines the list of dependencies. A dependency is declared as a &lt;code&gt;&amp;lt;dependency&amp;gt;&lt;/code&gt; element of a list style &lt;code&gt;&amp;lt;dependencies&amp;gt;&lt;/code&gt; element: 
&lt;pre&gt;&amp;lt;dependency&amp;gt;
    &amp;lt;group&amp;gt;theGroup&amp;lt;/group&amp;gt;
    &amp;lt;name&amp;gt;theName&amp;lt;/name&amp;gt;
    &amp;lt;version&amp;gt;1.5&amp;lt;/version&amp;gt;
&amp;lt;/dependency&amp;gt;
&lt;/pre&gt;
&lt;p&gt;The dependency can also reference a maven project dependency, this is preferred as it yields to more robust builds.&lt;/p&gt;
&lt;pre&gt;&amp;lt;dependency&amp;gt;
    &amp;lt;groupId&amp;gt;theGroup&amp;lt;/groupId&amp;gt;
    &amp;lt;artifactId&amp;gt;theName&amp;lt;/artifactId&amp;gt;
&amp;lt;/dependency&amp;gt;
&lt;/pre&gt;
&lt;p&gt;The &lt;code&gt;versionRange&lt;/code&gt; may be indicated as a single version, in which case the version range has no upper bound and defines the minimal version accepted. Otherwise, the version range defines a lower and upper bound of accepted versions, where the bounds are either included using parentheses &lt;code&gt;()&lt;/code&gt; or excluded using brackets &lt;code&gt;[]&lt;/code&gt;&lt;/p&gt;</description>
        </parameter>
        <parameter>
          <name>excludes</name>
          <type>java.lang.String[]</type>
          <typeJavadocUrl>apidocs/java/lang/String.html</typeJavadocUrl>
          <required>true</required>
          <editable>true</editable>
          <description>The file name patterns to exclude in addition to the ones listed in &lt;code&gt;org.codehaus.plexus.util.AbstractScanner.DEFAULTEXCLUDES&lt;/code&gt;&lt;!-- this link does not have javadoc linked --&gt;. The format of each pattern is described in &lt;code&gt;org.codehaus.plexus.util.DirectoryScanner&lt;/code&gt;&lt;!-- this link does not have javadoc linked --&gt;. The comparison is against the path relative to the according filter root. Since this is hardly predictable it is recommended to use only filename/directory name patterns here but not take into account file system hierarchies! 
&lt;p&gt;Each value is either a regex pattern if enclosed within &lt;code&gt;%regex[&lt;/code&gt; and &lt;code&gt;]&lt;/code&gt;, otherwise an &lt;a href=&quot;https://ant.apache.org/manual/dirtasks.html#patterns&quot;&gt;Ant pattern&lt;/a&gt;.&lt;/p&gt;</description>
        </parameter>
        <parameter>
          <name>failOnDependencyErrors</name>
          <type>boolean</type>
          <deprecated>Use &lt;a href=&quot;#validatorsSettings&quot;&gt;&lt;code&gt;validatorsSettings&lt;/code&gt;&lt;/a&gt; with the following values instead 
&lt;pre&gt;  &amp;lt;jackrabbit-dependencies&amp;gt;
      &amp;lt;defaultSeverity&amp;gt;debug&amp;lt;/defaultSeverity&amp;gt;
  &amp;lt;/jackrabbit-dependencies&amp;gt;
&lt;/pre&gt;</deprecated>
          <required>true</required>
          <editable>true</editable>
          <description>Controls if errors during dependency validation should fail the build.</description>
        </parameter>
        <parameter>
          <name>failOnValidationWarnings</name>
          <type>boolean</type>
          <required>false</required>
          <editable>true</editable>
          <description>If set to &lt;code&gt;true&lt;/code&gt; will lead to all validation errors or warnings failing the build, otherwise only validation errors lead to a build failure</description>
        </parameter>
        <parameter>
          <name>jcrRootSourceDirectory</name>
          <type>java.io.File[]</type>
          <typeJavadocUrl>apidocs/java/io/File.html</typeJavadocUrl>
          <required>true</required>
          <editable>true</editable>
          <description>The directory that contains the jcr_root of the content. Multiple directories can be specified as a comma separated list, which will act as a search path and cause the plugin to look for the first existing directory.</description>
        </parameter>
        <parameter>
          <name>mapPackageDependencyToMavenGa</name>
          <type>java.util.Collection</type>
          <typeJavadocUrl>apidocs/java/util/Collection.html</typeJavadocUrl>
          <required>false</required>
          <editable>true</editable>
          <description>Mapping of package dependencies given via group and name to Maven identifiers for enhanced validation. Each entry must have the format &lt;code&gt;&amp;lt;group&amp;gt;:&amp;lt;name&amp;gt;=&amp;lt;groupId&amp;gt;:&amp;lt;artifactId&amp;gt;&lt;/code&gt;. To disable lookup (e.g. because referenced artifact is not available in a Maven repository) use &lt;code&gt;&amp;lt;group&amp;gt;:&amp;lt;name&amp;gt;=ignore&lt;/code&gt;. This will also prevent the WARNING which would be otherwise be emitted.</description>
        </parameter>
        <parameter>
          <name>metaInfVaultDirectory</name>
          <type>java.io.File[]</type>
          <typeJavadocUrl>apidocs/java/io/File.html</typeJavadocUrl>
          <required>true</required>
          <editable>true</editable>
          <description>The directory that contains the META-INF/vault. Multiple directories can be specified as a comma separated list, which will act as a search path and cause the plugin to look for the first existing directory. 
&lt;p&gt;This directory is added as fileset to the package archiver before the the &lt;a href=&quot;#workDirectory&quot;&gt;&lt;code&gt;workDirectory&lt;/code&gt;&lt;/a&gt;. This means that files specified in this directory have precedence over the one present in the &lt;a href=&quot;#workDirectory&quot;&gt;&lt;code&gt;workDirectory&lt;/code&gt;&lt;/a&gt;. For example, if this directory contains a &lt;code&gt;properties.xml&lt;/code&gt; it will not be overwritten by the generated one. A special case is the &lt;code&gt;filter.xml&lt;/code&gt; which will be merged with inline filters if present.&lt;/p&gt;</description>
        </parameter>
        <parameter>
          <name>mojoExecution</name>
          <type>org.apache.maven.plugin.MojoExecution</type>
          <typeJavadocUrl>apidocs/org/apache/maven/plugin/MojoExecution.html</typeJavadocUrl>
          <required>true</required>
          <editable>false</editable>
          <description></description>
        </parameter>
        <parameter>
          <name>project</name>
          <type>org.apache.maven.project.MavenProject</type>
          <typeJavadocUrl>apidocs/org/apache/maven/project/MavenProject.html</typeJavadocUrl>
          <required>false</required>
          <editable>false</editable>
          <description>The Maven project (never &lt;code&gt;null&lt;/code&gt;, but might be dummy project returning &lt;code&gt;null&lt;/code&gt; for all methods if running outside a &lt;code&gt;pom.xml&lt;/code&gt; context)</description>
        </parameter>
        <parameter>
          <name>repositoryStructurePackages</name>
          <type>java.util.Collection</type>
          <typeJavadocUrl>apidocs/java/util/Collection.html</typeJavadocUrl>
          <required>false</required>
          <editable>true</editable>
          <description>Defines the packages that define the repository structure. They are sharing the same format as the elements used in &lt;a href=&quot;#dependencies&quot;&gt;&lt;code&gt;dependencies&lt;/code&gt;&lt;/a&gt;. 
&lt;p&gt;The &lt;a href=&quot;https://sling.apache.org/documentation/bundles/repository-initialization.html&quot;&gt;repoinit feature&lt;/a&gt; of Sling can define initial content that will be available in the repository before the first package is installed. Packages that depend on those nodes have no way to reference a regular dependency package that provides these nodes. A &quot;real&quot; package that would creates those nodes cannot be installed in the repository, because it would void the repoinit structure. On the other hand FileVault would complain, if the package was listed as dependency but not installed in the repository. Therefore these repository-structure packages serve as build-time only dependency that help satisfy the structural dependencies, but are not added as real (i.e. run-time) dependencies to the package. Repository-structure packages are only evaluated for their contained &lt;a href=&quot;https://jackrabbit.apache.org/filevault/filter.html&quot;&gt;filter rules&apos; root attributes&lt;/a&gt;. Currently these packages are only used to define the &lt;a href=&quot;https://jackrabbit.apache.org/filevault/validation.html#standard-validators&quot;&gt;&lt;code&gt;validRoots&lt;/code&gt; of the validator &lt;code&gt;jackrabbit-filter&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;</description>
        </parameter>
        <parameter>
          <name>session</name>
          <type>org.apache.maven.execution.MavenSession</type>
          <typeJavadocUrl>apidocs/org/apache/maven/execution/MavenSession.html</typeJavadocUrl>
          <required>false</required>
          <editable>false</editable>
          <description></description>
        </parameter>
        <parameter>
          <name>skipValidation</name>
          <type>boolean</type>
          <required>true</required>
          <editable>true</editable>
          <description>Skips validation.</description>
        </parameter>
        <parameter>
          <name>validatorsSettings</name>
          <type>java.util.Map</type>
          <typeJavadocUrl>apidocs/java/util/Map.html</typeJavadocUrl>
          <required>false</required>
          <editable>true</editable>
          <description>All validator settings in a map. The keys are the validator ids (optionally suffixed by &lt;code&gt;__&lt;/code&gt; and some arbitrary string). Each key must only appear once. Use the suffix if you have validator settings for the same id with different restrictions. The values are a complex object of type &lt;a href=&quot;apidocs/org/apache/jackrabbit/filevault/maven/packaging/ValidatorSettings.html&quot;&gt;&lt;code&gt;org.apache.jackrabbit.filevault.maven.packaging.ValidatorSettings&lt;/code&gt;&lt;/a&gt;. An example configuration looks like 
&lt;pre&gt; &amp;lt;jackrabbit-filter&amp;gt;
     &amp;lt;options&amp;gt;
         &amp;lt;severityForUncoveredAncestorNodes&amp;gt;error&amp;lt;/severityForUncoveredAncestorNodes&amp;gt;
     &amp;lt;/options&amp;gt;
 &amp;lt;/jackrabbit-filter&amp;gt;
&lt;/pre&gt; Each validator settings consists of the fields &lt;code&gt;isDisabled&lt;/code&gt;, &lt;code&gt;defaultSeverity&lt;/code&gt; and &lt;code&gt;options&lt;/code&gt;. In addition the settings may be restricted to certain packages only with the help of field &lt;code&gt;packageRestriction&lt;/code&gt;. 
&lt;pre&gt; &amp;lt;jackrabbit-filter__restricted1&amp;gt;
     &amp;lt;options&amp;gt;
         &amp;lt;severityForUncoveredAncestorNodes&amp;gt;warning&amp;lt;/severityForUncoveredAncestorNodes&amp;gt;
     &amp;lt;/options&amp;gt;
     &amp;lt;packageRestriction&amp;gt;
         &amp;lt;group&amp;gt;somegroup&amp;lt;/group&amp;gt; &amp;lt;!-- optional, if set the enclosing settings apply only to packages with the given group --&amp;gt;
         &amp;lt;name&amp;gt;somename&amp;lt;/name&amp;gt; &amp;lt;!-- optional, if set the enclosing settings apply only to packages with the given name --&amp;gt;
         &amp;lt;subPackageOnly&amp;gt;true&amp;lt;/subPackageOnly&amp;gt; &amp;lt;!-- if set to true, the enclosing settings apply only to subpackages otherwise to all kinds of packages --&amp;gt;
     &amp;lt;packageRestriction&amp;gt;
 &amp;lt;/jackrabbit-filter__restricted1&amp;gt;
&lt;/pre&gt; As potentially multiple map entries may affect the same validator id (due to different suffixes) the settings for a single validator id are merged in the order from more specific to more generic settings: 
&lt;ol&gt;
 &lt;li&gt;settings for a specific package group and a specific package name&lt;/li&gt;
 &lt;li&gt;settings for any package group and a specific package name&lt;/li&gt;
 &lt;li&gt;settings for a specific package group and any package name&lt;/li&gt;
 &lt;li&gt;settings without restrictions&lt;/li&gt;
&lt;/ol&gt; Merging will only overwrite non-existing fields, i.e. same-named options from more specific settings will overwrite those from more generic ones (for the same validator id).</description>
        </parameter>
        <parameter>
          <name>workDirectory</name>
          <type>java.io.File</type>
          <typeJavadocUrl>apidocs/java/io/File.html</typeJavadocUrl>
          <required>true</required>
          <editable>true</editable>
          <description>The directory containing the metadata to be packaged up into the content package. Basically containing all files/folders being generated by goal &lt;code&gt;generate-metadata&lt;/code&gt;.</description>
        </parameter>
      </parameters>
      <configuration>
        <classifier implementation="java.lang.String">${vault.classifier}</classifier>
        <csvReportFile implementation="java.io.File">${vault.validation.csvReportFile}</csvReportFile>
        <dependencies implementation="java.util.Collection">${vault.dependencies}</dependencies>
        <excludes implementation="java.lang.String[]" default-value="**/.vlt,**/.vltignore">${vault.excludes}</excludes>
        <failOnDependencyErrors implementation="boolean" default-value="true">${vault.failOnDependencyErrors}</failOnDependencyErrors>
        <failOnValidationWarnings implementation="boolean" default-value="false">${vault.failOnValidationWarning}</failOnValidationWarnings>
        <jcrRootSourceDirectory implementation="java.io.File[]" default-value="${project.basedir}/jcr_root,${project.basedir}/src/main/jcr_root,${project.basedir}/src/main/content/jcr_root,${project.basedir}/src/content/jcr_root,${project.build.outputDirectory}">${vault.jcrRootSourceDirectory}</jcrRootSourceDirectory>
        <mapPackageDependencyToMavenGa implementation="java.util.Collection">${vault.package.dependency.to.maven.ga}</mapPackageDependencyToMavenGa>
        <metaInfVaultDirectory implementation="java.io.File[]" default-value="${project.basedir}/META-INF/vault,${project.basedir}/src/main/META-INF/vault,${project.basedir}/src/main/content/META-INF/vault,${project.basedir}/src/content/META-INF/vault">${vault.metaInfVaultDirectory}</metaInfVaultDirectory>
        <mojoExecution implementation="org.apache.maven.plugin.MojoExecution" default-value="${mojoExecution}"/>
        <project implementation="org.apache.maven.project.MavenProject" default-value="${project}"/>
        <repositoryStructurePackages implementation="java.util.Collection">${vault.repository.structure.packages}</repositoryStructurePackages>
        <session implementation="org.apache.maven.execution.MavenSession" default-value="${session}"/>
        <skipValidation implementation="boolean" default-value="false">${vault.skipValidation}</skipValidation>
        <workDirectory implementation="java.io.File" default-value="${project.build.directory}/vault-work"/>
      </configuration>
      <requirements>
        <requirement>
          <role>org.sonatype.plexus.build.incremental.BuildContext</role>
          <field-name>buildContext</field-name>
        </requirement>
        <requirement>
          <role>org.apache.maven.lifecycle.LifecycleExecutor</role>
          <field-name>lifecycleExecutor</field-name>
        </requirement>
        <requirement>
          <role>org.apache.maven.repository.RepositorySystem</role>
          <field-name>repositorySystem</field-name>
        </requirement>
        <requirement>
          <role>org.apache.maven.artifact.resolver.ResolutionErrorHandler</role>
          <field-name>resolutionErrorHandler</field-name>
        </requirement>
      </requirements>
    </mojo>
    <mojo>
      <goal>validate-package</goal>
      <description>Validates a package (and optionally in addition all attached packages with the given classifiers) with all registered validators. 
&lt;p&gt;&lt;i&gt;This goal is executed/bound by default for Maven modules of type &lt;code&gt;content-package&lt;/code&gt;.&lt;/i&gt;&lt;/p&gt;&lt;br /&gt;&lt;strong&gt;See also:&lt;/strong&gt; &lt;a href=&quot;https://jackrabbit.apache.org/filevault-package-maven-plugin/validators.html&quot;&gt;Validators&lt;/a&gt;</description>
      <requiresDependencyResolution>compile</requiresDependencyResolution>
      <requiresDirectInvocation>false</requiresDirectInvocation>
      <requiresProject>false</requiresProject>
      <requiresReports>false</requiresReports>
      <aggregator>false</aggregator>
      <requiresOnline>false</requiresOnline>
      <inheritedByDefault>true</inheritedByDefault>
      <phase>verify</phase>
      <implementation>org.apache.jackrabbit.filevault.maven.packaging.mojo.ValidatePackageMojo</implementation>
      <language>java</language>
      <instantiationStrategy>per-lookup</instantiationStrategy>
      <executionStrategy>once-per-session</executionStrategy>
      <since>1.1.0</since>
      <threadSafe>true</threadSafe>
      <parameters>
        <parameter>
          <name>attachedArtifacts</name>
          <type>java.util.List</type>
          <typeJavadocUrl>apidocs/java/util/List.html</typeJavadocUrl>
          <required>false</required>
          <editable>false</editable>
          <description></description>
        </parameter>
        <parameter>
          <name>classifier</name>
          <type>java.lang.String</type>
          <typeJavadocUrl>apidocs/java/lang/String.html</typeJavadocUrl>
          <since>1.2.2</since>
          <required>false</required>
          <editable>true</editable>
          <description>The given classifier is merged with the ones from parameter &lt;a href=&quot;#classifiers&quot;&gt;&lt;code&gt;classifiers&lt;/code&gt;&lt;/a&gt;. All matching attached artifacts are validated (potentially in addition to the primary artifact depending on parameter &lt;a href=&quot;#skipPrimaryArtifact&quot;&gt;&lt;code&gt;skipPrimaryArtifact&lt;/code&gt;&lt;/a&gt;).</description>
        </parameter>
        <parameter>
          <name>classifiers</name>
          <type>java.util.List</type>
          <typeJavadocUrl>apidocs/java/util/List.html</typeJavadocUrl>
          <since>1.1.4</since>
          <required>false</required>
          <editable>true</editable>
          <description>The given classifiers are merged with the one from parameter &lt;a href=&quot;#classifier&quot;&gt;&lt;code&gt;classifier&lt;/code&gt;&lt;/a&gt;. All matching attached artifacts are validated (potentially in addition to the primary artifact depending on parameter &lt;a href=&quot;#skipPrimaryArtifact&quot;&gt;&lt;code&gt;skipPrimaryArtifact&lt;/code&gt;&lt;/a&gt;).</description>
        </parameter>
        <parameter>
          <name>csvReportFile</name>
          <type>java.io.File</type>
          <typeJavadocUrl>apidocs/java/io/File.html</typeJavadocUrl>
          <required>false</required>
          <editable>true</editable>
          <description>The file where to write a report of all found validation violations (warnings and errors) in CSV format as defined in &lt;a href=&quot;https://tools.ietf.org/html/rfc4180&quot;&gt;RFC 4180&lt;/a&gt;. The generated file is using UTF-8 character encoding. No CSV report is written if this parameter is not set (default).</description>
        </parameter>
        <parameter>
          <name>dependencies</name>
          <type>java.util.Collection</type>
          <typeJavadocUrl>apidocs/java/util/Collection.html</typeJavadocUrl>
          <required>false</required>
          <editable>true</editable>
          <description>Defines the list of dependencies. A dependency is declared as a &lt;code&gt;&amp;lt;dependency&amp;gt;&lt;/code&gt; element of a list style &lt;code&gt;&amp;lt;dependencies&amp;gt;&lt;/code&gt; element: 
&lt;pre&gt;&amp;lt;dependency&amp;gt;
    &amp;lt;group&amp;gt;theGroup&amp;lt;/group&amp;gt;
    &amp;lt;name&amp;gt;theName&amp;lt;/name&amp;gt;
    &amp;lt;version&amp;gt;1.5&amp;lt;/version&amp;gt;
&amp;lt;/dependency&amp;gt;
&lt;/pre&gt;
&lt;p&gt;The dependency can also reference a maven project dependency, this is preferred as it yields to more robust builds.&lt;/p&gt;
&lt;pre&gt;&amp;lt;dependency&amp;gt;
    &amp;lt;groupId&amp;gt;theGroup&amp;lt;/groupId&amp;gt;
    &amp;lt;artifactId&amp;gt;theName&amp;lt;/artifactId&amp;gt;
&amp;lt;/dependency&amp;gt;
&lt;/pre&gt;
&lt;p&gt;The &lt;code&gt;versionRange&lt;/code&gt; may be indicated as a single version, in which case the version range has no upper bound and defines the minimal version accepted. Otherwise, the version range defines a lower and upper bound of accepted versions, where the bounds are either included using parentheses &lt;code&gt;()&lt;/code&gt; or excluded using brackets &lt;code&gt;[]&lt;/code&gt;&lt;/p&gt;</description>
        </parameter>
        <parameter>
          <name>enforceRecursiveSubpackageValidation</name>
          <type>boolean</type>
          <required>true</required>
          <editable>true</editable>
          <description>If set to &lt;code&gt;true&lt;/code&gt; always executes all validators also for all sub packages (recursively).</description>
        </parameter>
        <parameter>
          <name>failOnDependencyErrors</name>
          <type>boolean</type>
          <deprecated>Use &lt;a href=&quot;#validatorsSettings&quot;&gt;&lt;code&gt;validatorsSettings&lt;/code&gt;&lt;/a&gt; with the following values instead 
&lt;pre&gt;  &amp;lt;jackrabbit-dependencies&amp;gt;
      &amp;lt;defaultSeverity&amp;gt;debug&amp;lt;/defaultSeverity&amp;gt;
  &amp;lt;/jackrabbit-dependencies&amp;gt;
&lt;/pre&gt;</deprecated>
          <required>true</required>
          <editable>true</editable>
          <description>Controls if errors during dependency validation should fail the build.</description>
        </parameter>
        <parameter>
          <name>failOnValidationWarnings</name>
          <type>boolean</type>
          <required>false</required>
          <editable>true</editable>
          <description>If set to &lt;code&gt;true&lt;/code&gt; will lead to all validation errors or warnings failing the build, otherwise only validation errors lead to a build failure</description>
        </parameter>
        <parameter>
          <name>mapPackageDependencyToMavenGa</name>
          <type>java.util.Collection</type>
          <typeJavadocUrl>apidocs/java/util/Collection.html</typeJavadocUrl>
          <required>false</required>
          <editable>true</editable>
          <description>Mapping of package dependencies given via group and name to Maven identifiers for enhanced validation. Each entry must have the format &lt;code&gt;&amp;lt;group&amp;gt;:&amp;lt;name&amp;gt;=&amp;lt;groupId&amp;gt;:&amp;lt;artifactId&amp;gt;&lt;/code&gt;. To disable lookup (e.g. because referenced artifact is not available in a Maven repository) use &lt;code&gt;&amp;lt;group&amp;gt;:&amp;lt;name&amp;gt;=ignore&lt;/code&gt;. This will also prevent the WARNING which would be otherwise be emitted.</description>
        </parameter>
        <parameter>
          <name>mojoExecution</name>
          <type>org.apache.maven.plugin.MojoExecution</type>
          <typeJavadocUrl>apidocs/org/apache/maven/plugin/MojoExecution.html</typeJavadocUrl>
          <required>true</required>
          <editable>false</editable>
          <description></description>
        </parameter>
        <parameter>
          <name>primaryArtifact</name>
          <type>java.io.File</type>
          <typeJavadocUrl>apidocs/java/io/File.html</typeJavadocUrl>
          <required>false</required>
          <editable>false</editable>
          <description>The main package file to validate.</description>
        </parameter>
        <parameter>
          <name>project</name>
          <type>org.apache.maven.project.MavenProject</type>
          <typeJavadocUrl>apidocs/org/apache/maven/project/MavenProject.html</typeJavadocUrl>
          <required>false</required>
          <editable>false</editable>
          <description>The Maven project (never &lt;code&gt;null&lt;/code&gt;, but might be dummy project returning &lt;code&gt;null&lt;/code&gt; for all methods if running outside a &lt;code&gt;pom.xml&lt;/code&gt; context)</description>
        </parameter>
        <parameter>
          <name>repositoryStructurePackages</name>
          <type>java.util.Collection</type>
          <typeJavadocUrl>apidocs/java/util/Collection.html</typeJavadocUrl>
          <required>false</required>
          <editable>true</editable>
          <description>Defines the packages that define the repository structure. They are sharing the same format as the elements used in &lt;a href=&quot;#dependencies&quot;&gt;&lt;code&gt;dependencies&lt;/code&gt;&lt;/a&gt;. 
&lt;p&gt;The &lt;a href=&quot;https://sling.apache.org/documentation/bundles/repository-initialization.html&quot;&gt;repoinit feature&lt;/a&gt; of Sling can define initial content that will be available in the repository before the first package is installed. Packages that depend on those nodes have no way to reference a regular dependency package that provides these nodes. A &quot;real&quot; package that would creates those nodes cannot be installed in the repository, because it would void the repoinit structure. On the other hand FileVault would complain, if the package was listed as dependency but not installed in the repository. Therefore these repository-structure packages serve as build-time only dependency that help satisfy the structural dependencies, but are not added as real (i.e. run-time) dependencies to the package. Repository-structure packages are only evaluated for their contained &lt;a href=&quot;https://jackrabbit.apache.org/filevault/filter.html&quot;&gt;filter rules&apos; root attributes&lt;/a&gt;. Currently these packages are only used to define the &lt;a href=&quot;https://jackrabbit.apache.org/filevault/validation.html#standard-validators&quot;&gt;&lt;code&gt;validRoots&lt;/code&gt; of the validator &lt;code&gt;jackrabbit-filter&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;</description>
        </parameter>
        <parameter>
          <name>session</name>
          <type>org.apache.maven.execution.MavenSession</type>
          <typeJavadocUrl>apidocs/org/apache/maven/execution/MavenSession.html</typeJavadocUrl>
          <required>false</required>
          <editable>false</editable>
          <description></description>
        </parameter>
        <parameter>
          <name>skipPrimaryArtifact</name>
          <type>boolean</type>
          <since>1.3.2</since>
          <required>false</required>
          <editable>true</editable>
          <description>If set to &lt;code&gt;true&lt;/code&gt; skips validating the project&apos;s primary artifact but only the ones being attached and having a classifier equal to the one(s) in either &lt;a href=&quot;#classifiers&quot;&gt;&lt;code&gt;classifiers&lt;/code&gt;&lt;/a&gt; and/or &lt;a href=&quot;#classifier&quot;&gt;&lt;code&gt;classifier&lt;/code&gt;&lt;/a&gt;.</description>
        </parameter>
        <parameter>
          <name>skipSubPackageValidation</name>
          <type>boolean</type>
          <since>1.1.2</since>
          <required>true</required>
          <editable>true</editable>
          <description>If set to &lt;code&gt;true&lt;/code&gt; will not validate any sub packages. This settings overwrites the parameter &lt;a href=&quot;#enforceRecursiveSubpackageValidation&quot;&gt;&lt;code&gt;enforceRecursiveSubpackageValidation&lt;/code&gt;&lt;/a&gt;.</description>
        </parameter>
        <parameter>
          <name>skipValidation</name>
          <type>boolean</type>
          <required>true</required>
          <editable>true</editable>
          <description>Skips validation.</description>
        </parameter>
        <parameter>
          <name>validatorsSettings</name>
          <type>java.util.Map</type>
          <typeJavadocUrl>apidocs/java/util/Map.html</typeJavadocUrl>
          <required>false</required>
          <editable>true</editable>
          <description>All validator settings in a map. The keys are the validator ids (optionally suffixed by &lt;code&gt;__&lt;/code&gt; and some arbitrary string). Each key must only appear once. Use the suffix if you have validator settings for the same id with different restrictions. The values are a complex object of type &lt;a href=&quot;apidocs/org/apache/jackrabbit/filevault/maven/packaging/ValidatorSettings.html&quot;&gt;&lt;code&gt;org.apache.jackrabbit.filevault.maven.packaging.ValidatorSettings&lt;/code&gt;&lt;/a&gt;. An example configuration looks like 
&lt;pre&gt; &amp;lt;jackrabbit-filter&amp;gt;
     &amp;lt;options&amp;gt;
         &amp;lt;severityForUncoveredAncestorNodes&amp;gt;error&amp;lt;/severityForUncoveredAncestorNodes&amp;gt;
     &amp;lt;/options&amp;gt;
 &amp;lt;/jackrabbit-filter&amp;gt;
&lt;/pre&gt; Each validator settings consists of the fields &lt;code&gt;isDisabled&lt;/code&gt;, &lt;code&gt;defaultSeverity&lt;/code&gt; and &lt;code&gt;options&lt;/code&gt;. In addition the settings may be restricted to certain packages only with the help of field &lt;code&gt;packageRestriction&lt;/code&gt;. 
&lt;pre&gt; &amp;lt;jackrabbit-filter__restricted1&amp;gt;
     &amp;lt;options&amp;gt;
         &amp;lt;severityForUncoveredAncestorNodes&amp;gt;warning&amp;lt;/severityForUncoveredAncestorNodes&amp;gt;
     &amp;lt;/options&amp;gt;
     &amp;lt;packageRestriction&amp;gt;
         &amp;lt;group&amp;gt;somegroup&amp;lt;/group&amp;gt; &amp;lt;!-- optional, if set the enclosing settings apply only to packages with the given group --&amp;gt;
         &amp;lt;name&amp;gt;somename&amp;lt;/name&amp;gt; &amp;lt;!-- optional, if set the enclosing settings apply only to packages with the given name --&amp;gt;
         &amp;lt;subPackageOnly&amp;gt;true&amp;lt;/subPackageOnly&amp;gt; &amp;lt;!-- if set to true, the enclosing settings apply only to subpackages otherwise to all kinds of packages --&amp;gt;
     &amp;lt;packageRestriction&amp;gt;
 &amp;lt;/jackrabbit-filter__restricted1&amp;gt;
&lt;/pre&gt; As potentially multiple map entries may affect the same validator id (due to different suffixes) the settings for a single validator id are merged in the order from more specific to more generic settings: 
&lt;ol&gt;
 &lt;li&gt;settings for a specific package group and a specific package name&lt;/li&gt;
 &lt;li&gt;settings for any package group and a specific package name&lt;/li&gt;
 &lt;li&gt;settings for a specific package group and any package name&lt;/li&gt;
 &lt;li&gt;settings without restrictions&lt;/li&gt;
&lt;/ol&gt; Merging will only overwrite non-existing fields, i.e. same-named options from more specific settings will overwrite those from more generic ones (for the same validator id).</description>
        </parameter>
      </parameters>
      <configuration>
        <attachedArtifacts implementation="java.util.List" default-value="${project.attachedArtifacts}"/>
        <classifier implementation="java.lang.String">${vault.classifier}</classifier>
        <classifiers implementation="java.util.List">${vault.classifiers}</classifiers>
        <csvReportFile implementation="java.io.File">${vault.validation.csvReportFile}</csvReportFile>
        <dependencies implementation="java.util.Collection">${vault.dependencies}</dependencies>
        <enforceRecursiveSubpackageValidation implementation="boolean" default-value="false"/>
        <failOnDependencyErrors implementation="boolean" default-value="true">${vault.failOnDependencyErrors}</failOnDependencyErrors>
        <failOnValidationWarnings implementation="boolean" default-value="false">${vault.failOnValidationWarning}</failOnValidationWarnings>
        <mapPackageDependencyToMavenGa implementation="java.util.Collection">${vault.package.dependency.to.maven.ga}</mapPackageDependencyToMavenGa>
        <mojoExecution implementation="org.apache.maven.plugin.MojoExecution" default-value="${mojoExecution}"/>
        <primaryArtifact implementation="java.io.File" default-value="${project.artifact.file}"/>
        <project implementation="org.apache.maven.project.MavenProject" default-value="${project}"/>
        <repositoryStructurePackages implementation="java.util.Collection">${vault.repository.structure.packages}</repositoryStructurePackages>
        <session implementation="org.apache.maven.execution.MavenSession" default-value="${session}"/>
        <skipSubPackageValidation implementation="boolean" default-value="false"/>
        <skipValidation implementation="boolean" default-value="false">${vault.skipValidation}</skipValidation>
      </configuration>
      <requirements>
        <requirement>
          <role>org.sonatype.plexus.build.incremental.BuildContext</role>
          <field-name>buildContext</field-name>
        </requirement>
        <requirement>
          <role>org.apache.maven.repository.RepositorySystem</role>
          <field-name>repositorySystem</field-name>
        </requirement>
        <requirement>
          <role>org.apache.maven.artifact.resolver.ResolutionErrorHandler</role>
          <field-name>resolutionErrorHandler</field-name>
        </requirement>
      </requirements>
    </mojo>
  </mojos>
  <dependencies>
    <dependency>
      <groupId>org.apache.jackrabbit.vault</groupId>
      <artifactId>org.apache.jackrabbit.vault</artifactId>
      <type>jar</type>
      <version>3.6.4</version>
    </dependency>
    <dependency>
      <groupId>org.apache.jackrabbit.vault</groupId>
      <artifactId>vault-validation</artifactId>
      <type>jar</type>
      <version>3.6.4</version>
    </dependency>
    <dependency>
      <groupId>javax.jcr</groupId>
      <artifactId>jcr</artifactId>
      <type>jar</type>
      <version>2.0</version>
    </dependency>
    <dependency>
      <groupId>org.apache.jackrabbit</groupId>
      <artifactId>jackrabbit-jcr-commons</artifactId>
      <type>jar</type>
      <version>2.20.6</version>
    </dependency>
    <dependency>
      <groupId>org.apache.jackrabbit</groupId>
      <artifactId>oak-jackrabbit-api</artifactId>
      <type>jar</type>
      <version>1.42.0</version>
    </dependency>
    <dependency>
      <groupId>org.apache.jackrabbit</groupId>
      <artifactId>jackrabbit-spi-commons</artifactId>
      <type>jar</type>
      <version>2.20.6</version>
    </dependency>
    <dependency>
      <groupId>org.apache.jackrabbit</groupId>
      <artifactId>jackrabbit-spi</artifactId>
      <type>jar</type>
      <version>2.20.6</version>
    </dependency>
    <dependency>
      <groupId>commons-collections</groupId>
      <artifactId>commons-collections</artifactId>
      <type>jar</type>
      <version>3.2.2</version>
    </dependency>
    <dependency>
      <groupId>org.osgi</groupId>
      <artifactId>org.osgi.framework</artifactId>
      <type>jar</type>
      <version>1.8.0</version>
    </dependency>
    <dependency>
      <groupId>org.codehaus.plexus</groupId>
      <artifactId>plexus-interpolation</artifactId>
      <type>jar</type>
      <version>1.21</version>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-lang3</artifactId>
      <type>jar</type>
      <version>3.6</version>
    </dependency>
    <dependency>
      <groupId>org.codehaus.plexus</groupId>
      <artifactId>plexus-utils</artifactId>
      <type>jar</type>
      <version>3.4.2</version>
    </dependency>
    <dependency>
      <groupId>org.apache.maven</groupId>
      <artifactId>maven-archiver</artifactId>
      <type>jar</type>
      <version>3.6.0</version>
    </dependency>
    <dependency>
      <groupId>org.codehaus.plexus</groupId>
      <artifactId>plexus-io</artifactId>
      <type>jar</type>
      <version>3.4.0</version>
    </dependency>
    <dependency>
      <groupId>org.codehaus.plexus</groupId>
      <artifactId>plexus-archiver</artifactId>
      <type>jar</type>
      <version>4.4.0</version>
    </dependency>
    <dependency>
      <groupId>javax.inject</groupId>
      <artifactId>javax.inject</artifactId>
      <type>jar</type>
      <version>1</version>
    </dependency>
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <type>jar</type>
      <version>2.5</version>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-compress</artifactId>
      <type>jar</type>
      <version>1.21</version>
    </dependency>
    <dependency>
      <groupId>org.iq80.snappy</groupId>
      <artifactId>snappy</artifactId>
      <type>jar</type>
      <version>0.4</version>
    </dependency>
    <dependency>
      <groupId>org.tukaani</groupId>
      <artifactId>xz</artifactId>
      <type>jar</type>
      <version>1.9</version>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>jcl-over-slf4j</artifactId>
      <type>jar</type>
      <version>1.7.5</version>
    </dependency>
    <dependency>
      <groupId>biz.aQute.bnd</groupId>
      <artifactId>biz.aQute.bndlib</artifactId>
      <type>jar</type>
      <version>6.2.0</version>
    </dependency>
    <dependency>
      <groupId>org.osgi</groupId>
      <artifactId>org.osgi.dto</artifactId>
      <type>jar</type>
      <version>1.0.0</version>
    </dependency>
    <dependency>
      <groupId>org.osgi</groupId>
      <artifactId>org.osgi.resource</artifactId>
      <type>jar</type>
      <version>1.0.0</version>
    </dependency>
    <dependency>
      <groupId>org.osgi</groupId>
      <artifactId>org.osgi.util.tracker</artifactId>
      <type>jar</type>
      <version>1.5.4</version>
    </dependency>
    <dependency>
      <groupId>org.osgi</groupId>
      <artifactId>osgi.annotation</artifactId>
      <type>jar</type>
      <version>8.0.1</version>
    </dependency>
    <dependency>
      <groupId>org.osgi</groupId>
      <artifactId>org.osgi.service.log</artifactId>
      <type>jar</type>
      <version>1.3.0</version>
    </dependency>
    <dependency>
      <groupId>org.osgi</groupId>
      <artifactId>org.osgi.service.repository</artifactId>
      <type>jar</type>
      <version>1.1.0</version>
    </dependency>
    <dependency>
      <groupId>org.osgi</groupId>
      <artifactId>org.osgi.util.function</artifactId>
      <type>jar</type>
      <version>1.2.0</version>
    </dependency>
    <dependency>
      <groupId>org.osgi</groupId>
      <artifactId>org.osgi.util.promise</artifactId>
      <type>jar</type>
      <version>1.2.0</version>
    </dependency>
    <dependency>
      <groupId>biz.aQute.bnd</groupId>
      <artifactId>biz.aQute.bnd.util</artifactId>
      <type>jar</type>
      <version>6.2.0</version>
    </dependency>
    <dependency>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>animal-sniffer-maven-plugin</artifactId>
      <type>jar</type>
      <version>1.21</version>
    </dependency>
    <dependency>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>java-boot-classpath-detector</artifactId>
      <type>jar</type>
      <version>1.21</version>
    </dependency>
    <dependency>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>animal-sniffer</artifactId>
      <type>jar</type>
      <version>1.21</version>
    </dependency>
    <dependency>
      <groupId>org.ow2.asm</groupId>
      <artifactId>asm</artifactId>
      <type>jar</type>
      <version>9.2</version>
    </dependency>
    <dependency>
      <groupId>io.github.classgraph</groupId>
      <artifactId>classgraph</artifactId>
      <type>jar</type>
      <version>4.8.141</version>
    </dependency>
    <dependency>
      <groupId>org.apache.maven.shared</groupId>
      <artifactId>maven-common-artifact-filters</artifactId>
      <type>jar</type>
      <version>3.3.0</version>
    </dependency>
    <dependency>
      <groupId>org.sonatype.plexus</groupId>
      <artifactId>plexus-build-api</artifactId>
      <type>jar</type>
      <version>0.0.7</version>
    </dependency>
    <dependency>
      <groupId>org.apache.maven.shared</groupId>
      <artifactId>maven-filtering</artifactId>
      <type>jar</type>
      <version>3.3.0</version>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-csv</artifactId>
      <type>jar</type>
      <version>1.9.0</version>
    </dependency>
    <dependency>
      <groupId>org.apache.maven.shared</groupId>
      <artifactId>maven-shared-utils</artifactId>
      <type>jar</type>
      <version>3.3.4</version>
    </dependency>
  </dependencies>
</plugin>