<?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>
    <packaging>pom</packaging>

    <parent>
        <artifactId>wayang</artifactId>
        <groupId>org.apache.wayang</groupId>
        <version>0.7.1</version>
    </parent>

    <artifactId>wayang-platforms</artifactId>
    <version>0.7.1</version>

    <name>Wayang Platform</name>
    <description>
        This module aggregates platforms implemented on Wayang.
    </description>

    <modules>
        <module>wayang-java</module>
        <module>wayang-spark</module>
        <module>wayang-postgres</module>
        <module>wayang-jdbc-template</module>
        <module>wayang-sqlite3</module>
        <module>wayang-giraph</module>
        <module>wayang-flink</module>
        <module>wayang-generic-jdbc</module>
        <module>wayang-tensorflow</module>
    </modules>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.apache.wayang</groupId>
                <artifactId>wayang-commons</artifactId>
                <version>0.7.1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

</project>
