<?xml version="1.0" encoding="UTF-8"?>
<!--
   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.marmotta</groupId>
        <artifactId>marmotta-parent</artifactId>
        <version>3.3.0-SNAPSHOT</version>
        <relativePath>../parent</relativePath>
    </parent>

    <artifactId>platform-reactor</artifactId>
    <packaging>pom</packaging>

    <name>Apache Marmotta Platform: Reactor</name>
    <description>Linked Data Platform implementation of Apache Marmotta</description>


    <!-- release management -->
    <build>
        <plugins>
            <!-- do not install / deploy reactor -->
            <plugin>
                <artifactId>maven-deploy-plugin</artifactId>
                <configuration>
                    <skip>true</skip>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-install-plugin</artifactId>
                <configuration>
                    <skip>true</skip>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.rat</groupId>
                <artifactId>apache-rat-plugin</artifactId>
                <configuration>
                    <excludes>
                        <!-- Modules are checked individually -->
                        <exclude>marmotta-*/**</exclude>
                        <exclude>backends/**</exclude>
                        <exclude>ldcache/**</exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <modules>
        <module>marmotta-core</module>

        <!-- alternative backend implementations, only include exactly one in your classpath -->
        <module>backends</module>
        <module>ldcache</module>

        <!-- LDP -->
        <module>marmotta-ldp</module>

        <!-- generic modules -->
        <module>marmotta-ldpath</module>
        <module>marmotta-security</module>
        <module>marmotta-sparql</module>
        <module>marmotta-user</module>

        <module>marmotta-versioning-common</module>

        <!-- KiWi backend specific modules -->
        <module>marmotta-reasoner-kiwi</module>
        <module>marmotta-versioning-kiwi</module>

        <!-- Cloud Integration -->
        <module>marmotta-zookeeper</module>

    </modules>

</project>
