<?xml version="1.0"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
  -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd ">
    <modelVersion>4.0.0</modelVersion>
    <!-- ====================================================================== -->
    <!-- P A R E N T  P R O J E C T  D E S C R I P T I O N                      -->
    <!-- ====================================================================== -->
    <parent>
        <groupId>org.apache.jackrabbit.vault</groupId>
        <artifactId>parent</artifactId>
        <relativePath />
        <version>3.7.2</version>
    </parent>

    <!-- ====================================================================== -->
    <!-- P R O J E C T  D E S C R I P T I O N                                   -->
    <!-- ====================================================================== -->
    <groupId>org.apache.jackrabbit</groupId>
    <artifactId>filevault-package-maven-plugin</artifactId>
    <version>1.3.6</version>
    <packaging>maven-plugin</packaging>

    <name>Apache Jackrabbit FileVault - Package Maven Plugin</name>
    <description>Maven Plugin supporting creation of content packages.</description>

    <properties>
        <maven.version>3.3.9</maven.version> <!-- required for https://issues.apache.org/jira/browse/MNG-5440 -->
        <aether.version>1.0.2.v20150114</aether.version> <!-- should be the version exported by the maven.version, https://github.com/apache/maven/blob/bb52d8502b132ec0a5a3f4c09453c07478323dc5/pom.xml#L64 -->
        <slf4j.version>1.7.5</slf4j.version> <!-- should be the version exported by the maven.version, https://github.com/apache/maven/blob/bb52d8502b132ec0a5a3f4c09453c07478323dc5/pom.xml#L65 -->
        <filevault.version>${project.parent.version}</filevault.version> <!-- must be equal to parent version -->
        <maven.compiler.release>8</maven.compiler.release>
        <project.build.outputTimestamp>2023-11-13T16:27:09Z</project.build.outputTimestamp>
    </properties>

    <prerequisites>
        <maven>${maven.version}</maven>
    </prerequisites>

    <url>https://jackrabbit.apache.org/filevault-package-maven-plugin/</url>
    
    <!-- ====================================================================== -->
    <!-- S C M  D E F I N I T I O N                                             -->
    <!-- ====================================================================== -->
    <scm>
        <connection>scm:git:https://gitbox.apache.org/repos/asf/jackrabbit-filevault-package-maven-plugin.git</connection>
        <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/jackrabbit-filevault-package-maven-plugin.git</developerConnection>
        <url>https://github.com/apache/jackrabbit-filevault-package-maven-plugin/tree/${project.scm.tag}</url>
      <tag>filevault-package-maven-plugin-1.3.6</tag>
  </scm>

    <ciManagement>
        <system>Jenkins</system>
        <url>https://ci-builds.apache.org/blue/organizations/jenkins/Jackrabbit%2Ffilevault-package-maven-plugin/activity</url>
    </ciManagement>

    <!-- parent is available in SNAPSHOT repo of Apache -->
    <repositories>
        <repository>
            <id>apache.snapshots</id>
            <name>Apache Development Snapshot Repository</name>
            <url>https://repository.apache.org/content/repositories/snapshots/</url>
            <releases>
                <enabled>false</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>

    <!-- ====================================================================== -->
    <!-- B U I L D   D E F I N I T I O N                                        -->
    <!-- ====================================================================== -->
    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
            <resource>
                <directory>src/main/resources-filtered</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
        <plugins>
            <!-- ====================================================================== -->
            <!-- M A V E N   P L U G I N                                                -->
            <!-- ====================================================================== -->
            <plugin>
                <artifactId>maven-plugin-plugin</artifactId>
                <executions>
                    <execution>
                        <id>default-descriptor</id>
                        <phase>process-classes</phase>
                        <configuration>
                            <internalJavadocBaseUrl>./apidocs/</internalJavadocBaseUrl>
                            <externalJavadocBaseUrls>
                                <externalJavadocBaseUrl>https://jackrabbit.apache.org/filevault/apidocs/</externalJavadocBaseUrl>
                                <externalJavadocBaseUrl>https://maven.apache.org/shared/maven-archiver/apidocs/</externalJavadocBaseUrl>
                                <externalJavadocBaseUrl>https://docs.oracle.com/javase/8/docs/api/</externalJavadocBaseUrl>
                                <externalJavadocBaseUrl>https://codehaus-plexus.github.io/plexus-utils/apidocs/</externalJavadocBaseUrl>
                                <externalJavadocBaseUrl>https://maven.apache.org/ref/${maven.version}/maven-artifact/apidocs/</externalJavadocBaseUrl>
                                <externalJavadocBaseUrl>https://www.mojohaus.org/animal-sniffer/animal-sniffer/apidocs/</externalJavadocBaseUrl>
                            </externalJavadocBaseUrls>
                        </configuration>
                    </execution>
                    <!-- if you want to generate help goal -->
                    <execution>
                        <id>help-goal</id>
                        <goals>
                            <goal>helpmojo</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!-- ====================================================================== -->
            <!-- S I S U  P L U G I N                                                   -->
            <!-- ====================================================================== -->
            <plugin>
                <groupId>org.eclipse.sisu</groupId>
                <artifactId>sisu-maven-plugin</artifactId>
                <version>0.3.5</version>
                <executions>
                    <execution>
                        <id>index-project</id>
                        <goals>
                            <goal>main-index</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!-- ====================================================================== -->
            <!-- E N F O R C E R  P L U G I N                                           -->
            <!-- ====================================================================== -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-enforcer-plugin</artifactId>
                <dependencies>
                    <dependency>
                        <groupId>org.apache.sling</groupId>
                        <artifactId>maven-enforcer-rules</artifactId>
                        <version>1.2.0</version>
                    </dependency>
                </dependencies>
                <executions>
                    <!-- validate that all necessary dependencies are part of the Maven plugin classpath, https://github.com/apache/sling-maven-enforcer-rules/blob/master/README.md#require-provided-dependencies-in-runtime-classpath-since-version-100 -->
                    <execution>
                        <id>enforce-complete-plugin-classpath</id>
                        <goals>
                            <goal>enforce</goal>
                        </goals>
                        <configuration>
                            <rules>
                                <requireProvidedDependenciesInRuntimeClasspath implementation="org.apache.sling.maven.enforcer.RequireProvidedDependenciesInRuntimeClasspath">
                                    <excludes>
                                        <exclude>javax.servlet:javax.servlet-api</exclude><!-- not used in the CLI context -->
                                        <exclude>*:txw2</exclude><!-- embedded in vault-core -->
                                        <exclude>*:woodstox-core</exclude><!-- embedded in vault-core -->
                                        <exclude>*:stax2-api</exclude><!-- embedded in vault-core -->
                                        <exclude>*:maven-artifact</exclude><!-- embedded in vault-core -->
                                        <exclude>*:h2</exclude><!-- embedded in vault-core -->
                                        <exclude>org.apache.jackrabbit:jackrabbit-jcr2spi</exclude><!-- embedded in vault-core -->
                                        <exclude>org.apache.jackrabbit:jackrabbit-spi2dav</exclude><!-- not used in this context -->
                                        <exclude>org.apache.felix:org.apache.felix.configadmin</exclude><!-- all transitive ones (with provided scope) are not relevant here) -->
                                        <exclude>org.apache.felix:org.apache.felix.cm.json</exclude>
                                        <exclude>org.apache.felix:org.apache.felix.converter</exclude>
                                        <!-- the following artifacts are not supposed to be used in OSGi/container context -->
                                        <exclude>org.apache.maven:maven-archiver</exclude>
                                        <exclude>org.codehaus.plexus:plexus-archiver</exclude>
                                        <exclude>org.apache.maven.shared:maven-common-artifact-filters</exclude>
                                        <exclude>org.apache.maven.shared:maven-shared-utils</exclude>
                                        <exclude>org.sonatype.plexus:plexus-build-api</exclude>
                                        <exclude>org.apache.maven.shared:maven-filtering</exclude>
                                        <exclude>org.codehaus.mojo:animal-sniffer-maven-plugin</exclude>
                                        <exclude>biz.aQute.bnd:biz.aQute.bndlib</exclude>
                                        <exclude>org.slf4j:slf4j-api</exclude> <!-- always provided by Maven distribution -->
                                        <!-- no annotations are evaluated at run time -->
                                        <exclude>org.jetbrains:annotations</exclude>
                                        <exclude>org.eclipse.jdt:org.eclipse.jdt.annotation</exclude>
                                        <exclude>org.osgi:osgi.annotation</exclude>
                                        <exclude>org.osgi:org.osgi.annotation</exclude>
                                        <exclude>org.osgi:org.osgi.annotation.versioning</exclude>
                                        <exclude>org.osgi:org.osgi.service.metatype.annotations</exclude>
                                        <exclude>org.osgi:org.osgi.service.component.annotations</exclude>
                                    </excludes>
                                </requireProvidedDependenciesInRuntimeClasspath>
                            </rules>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <!-- ====================================================================== -->
            <!-- I N S T A L L   P L U G I N                                            -->
            <!-- ====================================================================== -->
            <plugin>
                <artifactId>maven-install-plugin</artifactId>
                <executions>
                    <execution>
                        <!--
                            make sure this plugin in installed in the local repository before the integration tests run
                            maybe switching back to a reactor project might be better again
                            Or use https://maven.apache.org/plugins/maven-invoker-plugin/install-mojo.html
                         -->
                        <phase>pre-integration-test</phase>
                        <goals>
                            <goal>install</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!-- ====================================================================== -->
            <!-- F A I L S A F E   P L U G I N                                          -->
            <!-- ====================================================================== -->
            <plugin>
                <artifactId>maven-failsafe-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>integration-test</goal>
                            <goal>verify</goal>
                        </goals>
                        <configuration>
                            <systemPropertyVariables>
                                <!-- pass maven.home property to maven-verifier -->
                                <maven.home>${maven.home}</maven.home>
                                <plugin.version>${project.version}</plugin.version>
                            </systemPropertyVariables>
                            <environmentVariables>
                                <!-- https://github.com/jenkinsci/pipeline-maven-plugin/blob/master/FAQ.adoc#how-to-disable-the-maven-event-spy-injected-by-the-pipeline-maven-plugin-in-maven-builds -->
                                <JENKINS_MAVEN_AGENT_DISABLED>true</JENKINS_MAVEN_AGENT_DISABLED>
                            </environmentVariables>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <!-- ====================================================================== -->
            <!-- S U R E F I R E   P L U G I N                                          -->
            <!-- ====================================================================== -->
            <plugin>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <trimStackTrace>false</trimStackTrace>
                    <!-- use TCP/IP communication -->
                    <forkNode implementation="org.apache.maven.plugin.surefire.extensions.SurefireForkNodeFactory" />
                </configuration>
            </plugin>
            <!-- ====================================================================== -->
            <!-- S I T E   P L U G I N                                                  -->
            <!-- ====================================================================== -->
            <plugin><!-- prepare site content by filtering ${project.*} values -->
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <executions>
                    <execution>
                        <id>filter-site</id>
                        <phase>pre-site</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}/site-src</outputDirectory>
                            <resources>
                                <resource>
                                    <directory>src/site</directory>
                                    <filtering>true</filtering>
                                </resource>
                            </resources>
                        </configuration>
                    </execution>
                    <execution>
                        <id>default-testResources</id>
                        <configuration>
                            <!-- copy .gitignore as well -->
                            <addDefaultExcludes>false</addDefaultExcludes>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-site-plugin</artifactId>
                <configuration>
                    <generateReports>true</generateReports>
                    <relativizeDecorationLinks>false</relativizeDecorationLinks>
                    <skip>false</skip>
                    <siteDirectory>${project.build.directory}/site-src</siteDirectory>
                </configuration>
            </plugin>
            <!-- ====================================================================== -->
            <!-- S C M   P U B L I S H   P L U G I N                                    -->
            <!-- ====================================================================== -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-scm-publish-plugin</artifactId>
                <executions>
                    <execution>
                        <id>scm-publish</id>
                        <phase>site-deploy</phase>
                        <goals>
                            <goal>publish-scm</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <content>target/site</content>
                    <checkinComment>@trivial: Site checkin for project ${project.name}-${project.version}
                    </checkinComment>
                    <ignorePathsToDelete>
                        <ignorePathToDelete>apidocs</ignorePathToDelete>
                    </ignorePathsToDelete>
                </configuration>
            </plugin>
            <!-- ====================================================================== -->
            <!-- R A T   P L U G I N                                                    -->
            <!-- ====================================================================== -->
            <plugin>
                <groupId>org.apache.rat</groupId>
                <artifactId>apache-rat-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>verify</phase>
                        <goals>
                            <goal>check</goal>
                        </goals>
                        <configuration>
                            <basedir>${project.basedir}</basedir>
                            <excludesFile>${project.basedir}/.ratignore</excludesFile>
                            <consoleOutput>true</consoleOutput>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <!-- ====================================================================== -->
    <!-- R E P O R T I N G                                                      -->
    <!-- ====================================================================== -->
    <reporting>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <reportSets>
                    <reportSet>
                        <reports>
                            <report>javadoc</report>
                        </reports>
                    </reportSet>
                </reportSets>
            </plugin>
            <plugin>
                <artifactId>maven-plugin-report-plugin</artifactId>
                <configuration>
                    <hasExtensionsToLoad>true</hasExtensionsToLoad>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-project-info-reports-plugin</artifactId>
                <configuration>
                    <dependencyDetailsEnabled>false</dependencyDetailsEnabled>
                </configuration>
            </plugin>
        </plugins>
    </reporting>

    <!-- ====================================================================== -->
    <!-- D I S T R I B U T I O N   M A N A G E M E N T                          -->
    <!-- ====================================================================== -->
    <distributionManagement>
        <site>
            <id>jackrabbit.filevault.site-deploy</id>
            <url>scm:svn:https://svn.apache.org/repos/asf/jackrabbit/site/live/filevault-package-maven-plugin-archives/${project.version}</url>
        </site>
    </distributionManagement>
    
    <dependencyManagement>
        <dependencies>
            <!-- Maven uses/provides a different SLF4J version than defined by FileVault Parent -->
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>${slf4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-simple</artifactId>
                <version>${slf4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.junit</groupId>
                <artifactId>junit-bom</artifactId>
                <version>5.8.2</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <!-- ====================================================================== -->
    <!-- D E P E N D E N C I E S                                                -->
    <!-- ====================================================================== -->
    <dependencies>
        <dependency>
            <groupId>org.apache.jackrabbit.vault</groupId>
            <artifactId>org.apache.jackrabbit.vault</artifactId>
            <version>${filevault.version}</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.jackrabbit.vault</groupId>
            <artifactId>vault-validation</artifactId>
            <version>${filevault.version}</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>javax.jcr</groupId>
            <artifactId>jcr</artifactId>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.jackrabbit</groupId>
            <artifactId>jackrabbit-jcr-commons</artifactId>
            <scope>compile</scope>
        </dependency>
        <!-- transitive dependencies of org.apache.jackrabbit.vault but must be declared due to https://issues.apache.org/jira/browse/JCRVLT-394 -->
        <dependency>
            <groupId>org.apache.jackrabbit</groupId>
            <artifactId>oak-jackrabbit-api</artifactId>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.jackrabbit</groupId>
            <artifactId>jackrabbit-spi-commons</artifactId>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.osgi</groupId>
            <artifactId>org.osgi.framework</artifactId>
            <scope>compile</scope>
        </dependency>
        <!-- Maven Core artifacts, version is determined by Maven distribution
             contained in https://github.com/apache/maven/blob/master/maven-core/src/main/resources/META-INF/maven/extension.xml#L133-L193, should have scope provided -->
        <dependency>
            <groupId>org.apache.maven</groupId>
            <artifactId>maven-core</artifactId>
            <version>${maven.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.maven</groupId>
            <artifactId>maven-plugin-api</artifactId>
            <version>${maven.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.maven</groupId>
            <artifactId>maven-artifact</artifactId>
            <version>${maven.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.maven</groupId>
            <artifactId>maven-model</artifactId>
            <version>${maven.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.eclipse.aether</groupId>
            <artifactId>aether-api</artifactId>
            <version>${aether.version}</version>
            <scope>provided</scope>
        </dependency>
        <!-- annotations and shared utils -->
        <dependency>
            <groupId>org.apache.maven.plugin-tools</groupId>
            <artifactId>maven-plugin-annotations</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.codehaus.plexus</groupId>
            <artifactId>plexus-utils</artifactId>
            <version>4.0.0</version>
            <scope>compile</scope>
        </dependency>
        <!-- This is not a core artifact, i.e. must not be used with scope "provided" despite having group id "org.apache.maven", https://issues.apache.org/jira/browse/MPLUGIN-385 -->
        <dependency>
            <groupId>org.apache.maven</groupId>
            <artifactId>maven-archiver</artifactId>
            <version>3.6.1</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.codehaus.plexus</groupId>
            <artifactId>plexus-archiver</artifactId>
            <version>4.8.0</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.jetbrains</groupId>
            <artifactId>annotations</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>jcl-over-slf4j</artifactId>
            <version>${slf4j.version}</version>
            <scope>compile</scope>
        </dependency>

        <!-- bundle tools -->
        <dependency>
            <groupId>biz.aQute.bnd</groupId>
            <artifactId>biz.aQute.bndlib</artifactId>
            <version>6.4.0</version>
            <scope>compile</scope>
        </dependency>

        <!-- used in the CheckSignature mojo -->
        <dependency>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>animal-sniffer-maven-plugin</artifactId>
            <version>1.23</version>
            <scope>compile</scope>
            <exclusions>
              <exclusion>
                <groupId>org.apache.maven</groupId>
                <artifactId>*</artifactId>
              </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>animal-sniffer</artifactId>
            <version>1.23</version>
            <scope>compile</scope>
        </dependency>

        <!-- class analyzer -->
        <dependency>
            <groupId>io.github.classgraph</groupId>
            <artifactId>classgraph</artifactId>
            <version>4.8.141</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.maven.shared</groupId>
            <artifactId>maven-common-artifact-filters</artifactId>
            <version>3.3.2</version>
            <scope>compile</scope>
            <exclusions>
              <exclusion>
                <groupId>org.apache.maven</groupId>
                <artifactId>*</artifactId>
              </exclusion>
            </exclusions>
        </dependency>

        <!-- incremental build support (http://www.eclipse.org/m2e/documentation/m2e-making-maven-plugins-compat.html) -->
        <dependency>
            <groupId>org.sonatype.plexus</groupId>
            <artifactId>plexus-build-api</artifactId>
            <version>0.0.7</version>
            <scope>compile</scope>
        </dependency>

        <!-- for Maven filtering -->
        <dependency>
            <groupId>org.apache.maven.shared</groupId>
            <artifactId>maven-filtering</artifactId>
            <version>3.3.1</version>
            <scope>compile</scope>
            <exclusions>
              <exclusion>
                <groupId>org.apache.maven</groupId>
                <artifactId>*</artifactId>
              </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-csv</artifactId>
            <version>1.9.0</version>
            <scope>compile</scope>
        </dependency>

        <!-- only use for package o.a.maven.shared.utils.logging, for other packages use plexus-utils -->
        <dependency>
            <groupId>org.apache.maven.shared</groupId>
            <artifactId>maven-shared-utils</artifactId>
            <version>3.4.2</version>
            <scope>compile</scope>
        </dependency>

        <!-- testing -->
        <dependency>
            <groupId>org.hamcrest</groupId>
            <artifactId>hamcrest</artifactId>
            <version>2.2</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-core</artifactId>
            <version>4.4.0</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.maven.shared</groupId>
            <artifactId>maven-verifier</artifactId>
            <version>1.8.0</version>
            <scope>test</scope>
            <exclusions>
                <!-- exclude JUnit4, not actively used in this context, compare with https://issues.apache.org/jira/browse/MSHARED-1043 -->
                <exclusion>
                    <groupId>junit</groupId>
                    <artifactId>junit</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- embedder for testing Embedded3xLauncher with classpath
             must test with the minimum supported Maven version, as otherwise the Maven Resolver/Aether API
             from the compile classpath conflicts
         -->
        <dependency>
            <groupId>org.apache.maven</groupId>
            <artifactId>maven-embedder</artifactId>
            <version>${maven.version}</version>
            <scope>test</scope>
        </dependency>
        <!-- START transitive dependencies of embedder -->
        <!-- required due to https://issues.apache.org/jira/browse/MNG-6561 -->
        <dependency>
            <groupId>org.apache.maven</groupId>
            <artifactId>maven-compat</artifactId>
            <version>${maven.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.eclipse.aether</groupId>
            <artifactId>aether-connector-basic</artifactId>
            <version>${aether.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.eclipse.aether</groupId>
            <artifactId>aether-transport-wagon</artifactId>
            <version>${aether.version}</version>
            <scope>test</scope>
        </dependency>
        <!-- END transitive dependencies of embedder -->
        <dependency>
            <groupId>org.apache.maven.shared</groupId>
            <artifactId>maven-shared-io</artifactId>
            <version>3.0.0</version>
            <scope>test</scope>
        </dependency>
        
        <dependency>
            <groupId>org.codehaus.plexus</groupId>
            <artifactId>plexus-xml</artifactId>
            <version>3.0.0</version><!-- use 3.0.0 to not depend on any Maven 4 impls yet, https://github.com/codehaus-plexus/plexus-utils/commit/e0106e4bff35cf92b3429871cf69e725a7d71755 --> 
            <scope>test</scope>
        </dependency>
    </dependencies>

    <!-- ====================================================================== -->
    <!-- P R O F I L E S                                                        -->
    <!-- ====================================================================== -->
    <profiles>
        <profile>
            <id>jacoco-report</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.jacoco</groupId>
                        <artifactId>jacoco-maven-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>prepare-agent-integration</id>
                                <goals>
                                    <goal>prepare-agent-integration</goal>
                                </goals>
                                <configuration>
                                    <!-- each Maven fork in ITs contributes to code coverage -->
                                    <append>true</append>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>apache-release</id>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-antrun-plugin</artifactId>
                        <executions>
                            <execution>
                                <goals>
                                    <goal>run</goal>
                                </goals>
                                <phase>deploy</phase>
                                <configuration>
                                    <target>
                                        <mkdir dir="${basedir}/target/${project.version}" />
                                        <copy todir="${basedir}/target/${project.version}" flatten="true">
                                            <fileset dir="${basedir}">
                                                <include name="RELEASE-NOTES.md" />
                                                <include name="target/*-source-release.zip*" />
                                            </fileset>
                                        </copy>
                                        <checksum algorithm="MD5" fileext=".md5">
                                            <fileset dir="${basedir}/target/${project.version}">
                                                <include name="*.zip" />
                                            </fileset>
                                        </checksum>
                                        <checksum algorithm="SHA-512" fileext=".sha512">
                                            <fileset dir="${basedir}/target/${project.version}">
                                                <include name="*.zip" />
                                            </fileset>
                                        </checksum>
                                        <checksum algorithm="SHA" fileext=".sha1">
                                            <fileset dir="${basedir}/target/${project.version}">
                                                <include name="*.zip" />
                                            </fileset>
                                        </checksum>
                                        <checksum file="${basedir}/target/${project.version}/filevault-package-maven-plugin-${project.version}-source-release.zip" algorithm="SHA1" property="checksum" />
                                        <echo file="${basedir}/target/vote.txt">
From: ${username}@apache.org
To: dev@jackrabbit.apache.org
Subject: [VOTE] Release Apache Jackrabbit FileVault Package Maven Plugin ${project.version}

Hello,

A candidate for the Jackrabbit FileVault Package Maven Plugin ${project.version} release is available at:
https://dist.apache.org/repos/dist/dev/jackrabbit/filevault-package-maven-plugin/${project.version}/

The release candidate is a zip archive of the sources in:
https://github.com/apache/jackrabbit-filevault-package-maven-plugin/tree/filevault-package-maven-plugin-${project.version}/

The release notes can be found in JIRA at https://issues.apache.org/jira/projects/JCRVLT/versions/...

The command for running automated checks against this release candidate is:
$ sh check-release.sh filevault-plugin ${project.version} ${checksum}

A staged Maven repository is available for review at:
https://repository.apache.org/content/repositories/orgapachejackrabbit-...

Please vote on releasing this package as Apache Jackrabbit FileVault Package Maven Plugin ${project.version}.
The vote is open for a minimum of 72 hours during business days and passes
if a majority of at least three +1 Jackrabbit PMC votes are cast.
The vote fails if not enough votes are cast after 1 week (5 business days).

[ ] +1 Release this package as Apache Jackrabbit FileVault Package Maven Plugin ${project.version}
[ ] -1 Do not release this package because...${line.separator}
                                        </echo>

                                        <echo>
    The release candidate has been prepared in:

    ${basedir}/target/${project.version}

    Please deploy it to
    https://dist.apache.org/repos/dist/dev/jackrabbit/filevault-package-maven-plugin:

    cd /path/to/jackrabbit-dev/filevault-package-maven-plugin
    mv ${basedir}/target/${project.version} ${project.version}
    svn add ${project.version}
    svn commit -m 'Apache Jackrabbit FileVault Package Maven Plugin ${project.version} release candidate' ${project.version}

    A release vote template has been generated for you:

    file://${basedir}/target/vote.txt
                                        </echo>
                                        <echo />
                                    </target>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>
