<?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 " child.project.url.inherit.append.path="false">
    <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</groupId>
        <artifactId>apache</artifactId>
        <version>23</version>
        <relativePath />
    </parent>

    <!-- ====================================================================== -->
    <!-- P R O J E C T D E S C R I P T I O N -->
    <!-- ====================================================================== -->
    <groupId>org.apache.jackrabbit.vault</groupId>
    <artifactId>parent</artifactId>
    <version>3.4.7-SNAPSHOT</version>
    <packaging>pom</packaging>

    <name>Apache Jackrabbit FileVault (Parent Project)</name>
    <description>
The FileVault introduces a JCR repository to filesystem mapping. The mapping
is exposed by an API and used by the "FileVault Content Packages" which allow to
create portable packages of repository content.

The Vault Command Line Interface aka "vlt" provides a subversion like
utility to work and develop with repository content.

Apache Jackrabbit FileVault is a project of the Apache Software Foundation.
    </description>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <jackrabbit.version>2.21.3</jackrabbit.version><!-- unstable because JCR-4536 is not available in a stable release yet -->
        <oak.version>1.32.0</oak.version>
        <slf4j.version>1.7.6</slf4j.version>
        <test.oak>false</test.oak>
        <test.vm.options>-Doak=$test.oak}</test.vm.options>
        <argLine>${test.vm.options}</argLine>
        <java.target.version>1.8</java.target.version>
        <bnd.version>5.1.1</bnd.version>
        <maven.version>3.6.1</maven.version><!-- due to https://issues.apache.org/jira/browse/MNG-6059 -->
        <surefire.version>3.0.0-M4</surefire.version>
        <sling.url>http://localhost:4502</sling.url>
    </properties>

    <!-- ====================================================================== -->
    <!-- S C M D E F I N I T I O N -->
    <!-- ====================================================================== -->
    <!-- using adjusted inheritance rules: https://issues.apache.org/jira/browse/MNG-6059 
    TODO: this block gets removed with each release https://issues.apache.org/jira/browse/MRELEASE-1053
    -->
    <scm child.scm.connection.inherit.append.path="false" child.scm.developerConnection.inherit.append.path="false"
        child.scm.url.inherit.append.path="true">
        <connection>scm:git:https://gitbox.apache.org/repos/asf/jackrabbit-filevault.git</connection>
        <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/jackrabbit-filevault.git</developerConnection>
        <url>https://github.com/apache/jackrabbit-filevault/tree/${project.scm.tag}</url>
        <tag>master</tag>
    </scm>

    <!-- ====================================================================== -->
    <!-- P R O J E C T  I N F O                                                 -->
    <!-- ====================================================================== -->
    <mailingLists>
        <mailingList>
            <name>Jackrabbit Developer List</name>
            <subscribe>dev-subscribe@jackrabbit.apache.org</subscribe>
            <unsubscribe>dev-unsubscribe@jackrabbit.apache.org</unsubscribe>
            <post>mailto:dev@jackrabbit.apache.org</post>
            <archive>https://lists.apache.org/list.html?dev@jackrabbit.apache.org</archive>
        </mailingList>

        <mailingList>
            <name>Jackrabbit User List</name>
            <subscribe>users-subscribe@jackrabbit.apache.org</subscribe>
            <unsubscribe>users-unsubscribe@jackrabbit.apache.org</unsubscribe>
            <post>mailto:users@jackrabbit.apache.org</post>
            <archive>https://lists.apache.org/list.html?users@jackrabbit.apache.org</archive>
        </mailingList>
    </mailingLists>

    <issueManagement>
        <system>JIRA</system>
        <url>https://issues.apache.org/jira/browse/JCRVLT</url>
    </issueManagement>

    <ciManagement>
        <system>Travis</system>
        <url>https://travis-ci.org/apache/jackrabbit-filevault</url>
    </ciManagement>

    <!-- ====================================================================== -->
    <!-- B U I L D D E F I N I T I O N -->
    <!-- ====================================================================== -->
    <build>
        <pluginManagement>
            <plugins>
                <!-- ====================================================================== -->
                <!-- S L I N G P L U G I N -->
                <!-- ====================================================================== -->
                <plugin>
                    <groupId>org.apache.sling</groupId>
                    <artifactId>sling-maven-plugin</artifactId>
                    <version>2.4.2</version>
                    <configuration>
                        <!-- slingUrl dynamically set by property -->
                        <slingUrlSuffix>/system/console</slingUrlSuffix>
                        <deploymentMethod>WebConsole</deploymentMethod>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>biz.aQute.bnd</groupId>
                    <artifactId>bnd-maven-plugin</artifactId>
                    <version>${bnd.version}</version>
                    <executions>
                        <execution>
                            <id>generate-osgi-metadata</id>
                            <goals>
                                <goal>bnd-process</goal>
                            </goals>
                            <configuration>
                                <bnd><![CDATA[
# we cannot let bnd-maven-plugin generate it automatically, as Maven applies some inheritance logic
Bundle-DocURL: https://jackrabbit.apache.org/filevault/
Bundle-Category: jackrabbit
# https://github.com/bndtools/bnd/tree/master/maven/bnd-maven-plugin#reproducible-builds
-noextraheaders: true
-snapshot: SNAPSHOT
# export all versioned packages except for conditional ones (https://github.com/bndtools/bnd/issues/3721#issuecomment-579026778)
-exportcontents: ${removeall;${packages;VERSIONED};${packages;CONDITIONAL}}
                                ]]></bnd>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>biz.aQute.bnd</groupId>
                    <artifactId>bnd-baseline-maven-plugin</artifactId>
                    <version>${bnd.version}</version>
                    <configuration>
                        <includeDistributionManagement>false</includeDistributionManagement>
                        <fullReport>true</fullReport>
                        <diffignores>
                            <!-- ignore Bundle-Version header for baseline, i.e. no enforcement of specific bundle versions -->
                            <diffignore>Bundle-Version</diffignore>
                        </diffignores>
                    </configuration>
                    <executions>
                        <execution>
                            <id>baseline</id>
                            <goals>
                                <goal>baseline</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>biz.aQute.bnd</groupId>
                    <artifactId>bnd-resolver-maven-plugin</artifactId>
                    <version>${bnd.version}</version>
                    <executions>
                        <execution>
                            <goals>
                                <goal>resolve</goal>
                            </goals>
                            <phase>verify</phase>
                        </execution>
                    </executions>
                    <configuration>
                        <useMavenDependencies>true</useMavenDependencies>
                        <!-- also include compile scoped dependencies (https://github.com/bndtools/bnd/blob/38ef85e389678370304846d6b09ffd31f9efb87d/biz.aQute.bnd.maven/src/aQute/bnd/maven/lib/resolve/Scope.java#L13), compare with https://github.com/bndtools/bnd/issues/4207 -->
                        <scopes>compile</scopes>
                        <failOnChanges>false</failOnChanges><!-- reuse for multiple bundles which all require different minimum container -->
                        <writeOnChanges>false</writeOnChanges>
                    </configuration>
                </plugin>
                <!-- ====================================================================== -->
                <!-- S U R E F I R E P L U G I N -->
                <!-- ====================================================================== -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <configuration>
                        <systemProperties>
                            <property>
                                <name>derby.stream.error.file</name>
                                <value>target/derby.log</value>
                            </property>
                        </systemProperties>
                        <trimStackTrace>false</trimStackTrace>
                    </configuration>
                </plugin>
                <!-- ====================================================================== -->
                <!-- R E L E A S E P L U G I N -->
                <!-- ====================================================================== -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-release-plugin</artifactId>
                    <configuration>
                        <autoVersionSubmodules>true</autoVersionSubmodules>
                        <projectVersionPolicyId>OddEvenVersionPolicy</projectVersionPolicyId>
                    </configuration>
                    <dependencies>
                        <dependency>
                            <groupId>org.apache.maven.release</groupId>
                            <artifactId>maven-release-oddeven-policy</artifactId>
                            <version>3.0.0-M1</version>
                        </dependency>
                        <!-- https://issues.apache.org/jira/browse/MRELEASE-1040 -->
                        <dependency>
                            <groupId>org.eclipse.aether</groupId>
                            <artifactId>aether-util</artifactId>
                            <version>1.0.0.v20140518</version>
                        </dependency>
                    </dependencies>
                </plugin>
                <!-- ====================================================================== -->
                <!-- R A T P L U G I N -->
                <!-- ====================================================================== -->
                <plugin>
                    <groupId>org.apache.rat</groupId>
                    <artifactId>apache-rat-plugin</artifactId>
                    <configuration>
                        <excludes>
                            <excludes>.ratignore</excludes>
                            <exclude>release.properties</exclude>
                            <exclude>.git/**</exclude>
                            <exclude>.idea/**</exclude>
                            <exclude>.gitignore</exclude>
                            <exclude>derby.log</exclude>
                            <exclude>**/*.zip/**</exclude>
                            <exclude>.mvn/**</exclude>
                            <exclude>.no-defender.sh</exclude>
                        </excludes>
                    </configuration>
                </plugin>
                <!-- ====================================================================== -->
                <!-- S I T E P L U G I N -->
                <!-- ====================================================================== -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-site-plugin</artifactId>
                    <version>3.9.1</version>
                    <configuration>
                        <skipDeploy>true</skipDeploy><!-- always deploy via maven-scm-publish-plugin -->
                    </configuration>
                    <dependencies>
                        <dependency>
                            <groupId>org.apache.maven.doxia</groupId>
                            <artifactId>doxia-module-markdown</artifactId>
                            <version>1.9.1</version>
                        </dependency>
                    </dependencies>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-project-info-reports-plugin</artifactId>
                    <version>3.1.0</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-javadoc-plugin</artifactId>
                    <version>3.2.0</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-enforcer-plugin</artifactId>
                    <version>3.0.0-M2</version>
                    <executions>
                        <execution>
                            <id>enforce-java-and-maven</id>
                            <goals>
                                <goal>enforce</goal>
                            </goals>
                            <configuration>
                                <rules>
                                    <requireJavaVersion>
                                        <version>${java.target.version}</version>
                                    </requireJavaVersion>
                                    <requireMavenVersion>
                                        <version>${maven.version}</version>
                                    </requireMavenVersion>
                                </rules>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.rat</groupId>
                <artifactId>apache-rat-plugin</artifactId>
            </plugin>
            <!-- compiler stuff -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>${java.target.version}</source>
                    <target>${java.target.version}</target>
                    <debug>true</debug>
                    <showDeprecation>false</showDeprecation>
                    <showWarnings>true</showWarnings>
                    <optimize>false</optimize>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-enforcer-plugin</artifactId>
            </plugin>
        </plugins>

    </build>

    <!-- ====================================================================== -->
    <!-- R E P O R T I N G -->
    <!-- ====================================================================== -->
    <reporting>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-project-info-reports-plugin</artifactId>
                <!--avoid child modules from inheriting anything from the apache parent pom -->
                <inherited>false</inherited>
            </plugin>
        </plugins>
    </reporting>

    <!-- ====================================================================== -->
    <!-- D E P E N D E N C Y M A N A G E M E N T -->
    <!-- ====================================================================== -->
    <dependencyManagement>
        <dependencies>
            <!-- CLI Stuff -->
            <dependency>
                <groupId>org.apache.mahout.commons</groupId>
                <artifactId>commons-cli</artifactId>
                <version>2.0-mahout</version>
            </dependency>
            <dependency>
                <groupId>jline</groupId>
                <artifactId>jline</artifactId>
                <version>0.9.94</version>
            </dependency>

            <!-- jackrabbit -->
            <dependency>
                <groupId>org.apache.jackrabbit</groupId>
                <artifactId>oak-jackrabbit-api</artifactId>
                <version>${oak.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.jackrabbit</groupId>
                <artifactId>jackrabbit-spi</artifactId>
                <version>${jackrabbit.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.jackrabbit</groupId>
                <artifactId>jackrabbit-jcr-commons</artifactId>
                <version>${jackrabbit.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.jackrabbit</groupId>
                <artifactId>jackrabbit-spi-commons</artifactId>
                <version>${jackrabbit.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.jackrabbit</groupId>
                <artifactId>jackrabbit-jcr2spi</artifactId>
                <version>${jackrabbit.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.jackrabbit</groupId>
                <artifactId>jackrabbit-jcr-client</artifactId>
                <version>${jackrabbit.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.jackrabbit</groupId>
                <artifactId>jackrabbit-spi2dav</artifactId>
                <version>${jackrabbit.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.jackrabbit</groupId>
                <artifactId>jackrabbit-webdav</artifactId>
                <version>${jackrabbit.version}</version>
            </dependency>

            <!-- JCR Stuff -->
            <dependency>
                <groupId>javax.jcr</groupId>
                <artifactId>jcr</artifactId>
                <version>2.0</version>
                <scope>provided</scope>
            </dependency>

            <!-- SLF4j / Log4j -->
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
                <version>${slf4j.version}</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>${slf4j.version}</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-simple</artifactId>
                <version>${slf4j.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.12</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.jetbrains</groupId>
                <artifactId>annotations</artifactId>
                <version>18.0.0</version>
                <scope>provided</scope>
            </dependency>

            <!-- other -->

            <!-- OSGi -->
            <!-- OSGi framework 1.8, Core R6 (https://osgi.org/javadoc/r6/core/org/osgi/framework/package-summary.html) -->
            <dependency>
                <groupId>org.osgi</groupId>
                <artifactId>org.osgi.framework</artifactId>
                <version>1.8.0</version>
                <scope>provided</scope>
            </dependency>
            <!-- Configuration Admin 1.6, Compendium R7 (https://osgi.org/javadoc/osgi.cmpn/7.0.0/org/osgi/service/cm/package-frame.html) -->
            <dependency>
                <groupId>org.osgi</groupId>
                <artifactId>org.osgi.service.cm</artifactId>
                <version>1.6.0</version>
                <scope>provided</scope>
            </dependency>
            <!-- Service Component 1.4, Compendium R7 (https://osgi.org/javadoc/osgi.cmpn/7.0.0/org/osgi/service/component/package-frame.html) -->
            <!-- and component property types (https://osgi.org/javadoc/osgi.cmpn/7.0.0/org/osgi/service/component/propertytypes/package-frame.html) -->
            <dependency>
                <groupId>org.osgi</groupId>
                <artifactId>org.osgi.service.component</artifactId>
                <version>1.4.0</version>
                <scope>provided</scope>
            </dependency>
            <!-- Event Admin 1.3.1, Compendium R6 (https://osgi.org/javadoc/r6/cmpn/org/osgi/service/event/package-summary.html) -->
            <dependency>
                <groupId>org.osgi</groupId>
                <artifactId>org.osgi.service.event</artifactId>
                <version>1.3.1</version>
                <scope>provided</scope>
            </dependency>

            <!-- OSGi Annotations: @Version -->
            <dependency>
                <groupId>org.osgi</groupId>
                <artifactId>org.osgi.annotation.versioning</artifactId>
                <version>1.1.0</version>
                <scope>provided</scope>
            </dependency>
            <!-- Declarative Service Annotations -->
            <dependency>
                <groupId>org.osgi</groupId>
                <artifactId>org.osgi.service.component.annotations</artifactId>
                <version>1.4.0</version>
                <scope>provided</scope>
            </dependency>
            <!-- Metatype Annotations -->
            <dependency>
                <groupId>org.osgi</groupId>
                <artifactId>org.osgi.service.metatype.annotations</artifactId>
                <version>1.3.0</version>
                <scope>provided</scope>
            </dependency>

            <dependency>
                <groupId>commons-io</groupId>
                <artifactId>commons-io</artifactId>
                <version>2.5</version>
            </dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-lang3</artifactId>
                <version>3.9</version>
            </dependency>
            <dependency>
                <groupId>commons-collections</groupId>
                <artifactId>commons-collections</artifactId>
                <version>3.2.2</version>
            </dependency>
            <dependency>
                <groupId>commons-codec</groupId>
                <artifactId>commons-codec</artifactId>
                <version>1.10</version>
            </dependency>
            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpmime</artifactId>
                <version>4.5.3</version>
            </dependency>
            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpclient</artifactId>
                <version>4.5.3</version>
            </dependency>
            <dependency>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
                <version>1.0.3</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <!-- ====================================================================== -->
    <!-- P R O F I L E S -->
    <!-- ====================================================================== -->
    <profiles>
        <profile>
            <!-- ====================================================================== -->
            <!-- R A T P L U G I N -->
            <!-- ====================================================================== -->
            <id>rat-check</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.rat</groupId>
                        <artifactId>apache-rat-plugin</artifactId>
                        <executions>
                            <execution>
                                <phase>verify</phase>
                                <goals>
                                    <goal>check</goal>
                                </goals>
                                <configuration>
                                    <consoleOutput>true</consoleOutput>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>java9-or-above</id>
            <activation>
                <jdk>[9,)</jdk>
            </activation>
            <build>
                <pluginManagement>
                    <plugins>
                        <plugin>
                            <artifactId>maven-javadoc-plugin</artifactId>
                            <configuration>
                                <!-- workaround for https://bugs.openjdk.java.net/browse/JDK-8212233 -->
                                <source>8</source>
                            </configuration>
                        </plugin>
                    </plugins>
                </pluginManagement>
            </build>
        </profile>
    </profiles>

</project>
