<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
  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/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.apache.sling</groupId>
        <artifactId>sling</artifactId>
        <version>25</version>
        <relativePath />
    </parent>

    <artifactId>org.apache.sling.testing.sling-mock-oak</artifactId>
    <version>1.0.0</version>
    <packaging>bundle</packaging>
  
    <name>Apache Sling Testing Sling Mock Oak-based Resource Resolver</name>
    <description>Implements a resource resolver type for Jackrabbit Oak that can be used in unit tests based on Sling Mocks.</description>
  
    <properties>
        <oak.version>1.2.2</oak.version>
        <jackrabbit.version>2.10.1</jackrabbit.version>
    </properties>

    <scm>
        <connection>scm:svn:http://svn.apache.org/repos/asf/sling/tags/org.apache.sling.testing.sling-mock-oak-1.0.0</connection>
        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/sling/tags/org.apache.sling.testing.sling-mock-oak-1.0.0</developerConnection>
        <url>http://svn.apache.org/viewvc/sling/tags/org.apache.sling.testing.sling-mock-oak-1.0.0</url>
    </scm>

    <dependencies>

        <dependency>
            <groupId>org.apache.sling</groupId>
            <artifactId>org.apache.sling.testing.sling-mock</artifactId>
            <version>1.6.0</version>
            <scope>compile</scope>
        </dependency>
    
        <dependency>
            <groupId>org.apache.sling</groupId>
            <artifactId>org.apache.sling.testing.sling-mock</artifactId>
            <version>1.6.0</version>
            <classifier>tests</classifier>
            <scope>test</scope>
        </dependency>

        <!-- Depend on oak-jcr, which pulls in all needed Oak artifacts -->
        <dependency>
            <groupId>org.apache.jackrabbit</groupId>
            <artifactId>oak-jcr</artifactId>
            <version>${oak.version}</version>
        </dependency>
        
        <!-- Ensure we depend on more recent jackrabbit artifacts required by Oak -->
        <dependency>
            <groupId>org.apache.jackrabbit</groupId>
            <artifactId>jackrabbit-jcr-commons</artifactId>
            <version>${jackrabbit.version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.jackrabbit</groupId>
            <artifactId>jackrabbit-api</artifactId>
            <version>${jackrabbit.version}</version>
        </dependency>

        <dependency>
            <groupId>javax.jcr</groupId>
            <artifactId>jcr</artifactId>
            <version>2.0</version>
            <scope>compile</scope>
        </dependency>

        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-all</artifactId>
            <version>1.9.5</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.sling</groupId>
            <artifactId>org.apache.sling.testing.logging-mock</artifactId>
            <version>1.0.0</version>
            <scope>test</scope>
        </dependency>
  
    </dependencies>
  
    <build>
        <plugins>
    
          <!-- Publish test artifact -->
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <executions>
              <execution>
                <goals>
                  <goal>test-jar</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
    
          <plugin>
            <groupId>org.apache.felix</groupId>
            <artifactId>maven-bundle-plugin</artifactId>
            <extensions>true</extensions>
          </plugin>
    
          <plugin>
            <groupId>org.apache.felix</groupId>
            <artifactId>maven-scr-plugin</artifactId>
            <executions>
              <execution>
                <id>generate-scr-scrdescriptor</id>
                <goals>
                  <goal>scr</goal>
                </goals>
              </execution>
            </executions>
          </plugin>

          <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-shade-plugin</artifactId>
              <version>2.4.1</version>
              <configuration>
                <!--
                    embed all jackrabbit artifacts to prevent classpath clashes
                    also include selected Sling bundles which are required
                    at runtime. Note that we don't relocate the packages
                    since org.apache.sling.jcr.resource already embeds some
                    jackrabbit classes which lead to a non-working jar
                -->
                <artifactSet>
                    <includes>
                        <include>org.apache.jackrabbit:*</include>
                    </includes>
                </artifactSet>
              </configuration>
              <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                </execution>
              </executions>
          </plugin>

          <plugin>
                <groupId>org.apache.rat</groupId>
                <artifactId>apache-rat-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>dependency-reduced-pom.xml</exclude>
                    </excludes>
                </configuration>
          </plugin>
        </plugins>
    </build>
  
</project>
