<?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.edgent.android</groupId>
    <artifactId>edgent-platforms-android</artifactId>
    <version>1.3.0-SNAPSHOT</version>
  </parent>

  <artifactId>edgent-distribution</artifactId>

  <name>Apache Edgent (Android): Distribution</name>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
        </configuration>
        <executions>
          <execution>
            <id>create-archive</id>
            <phase>package</phase>
            <goals>
              <goal>single</goal>
            </goals>
            <configuration>
              <descriptors>
                <descriptor>src/assembly/distribution.xml</descriptor>
              </descriptors>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <!-- We don't need any jars as output in this module -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <executions>
          <execution>
            <id>default-jar</id>
            <phase>none</phase>
          </execution>
          <execution>
            <id>default</id>
            <phase>none</phase>
          </execution>
        </executions>
      </plugin>
      <!-- We don't want to deploy the distributions to Maven -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-deploy-plugin</artifactId>
        <configuration>
          <skip>true</skip>
        </configuration>
      </plugin>
    </plugins>
  </build>

  <dependencies>
    <!-- The general strategy here is to only declare "top-level"
         Edgent artifacts, like an Edgent application pom would,
         and let those artifacts pull in their dependent
         Edgent artifacts, etc.
         So declare Providers, Analytics, Utils, Connectors.
    -->

    <!-- Providers -->
    <!-- Not on android <dependency>
      <groupId>org.apache.edgent.android</groupId>
      <artifactId>edgent-providers-development</artifactId>
      <version>1.3.0-SNAPSHOT</version>
    </dependency-->
    <dependency>
      <groupId>org.apache.edgent.android</groupId>
      <artifactId>edgent-providers-direct</artifactId>
      <version>1.3.0-SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>org.apache.edgent.android</groupId>
      <artifactId>edgent-providers-iot</artifactId>
      <version>1.3.0-SNAPSHOT</version>
    </dependency>

    <!-- Android platform speficic -->
    <dependency>
      <groupId>org.apache.edgent.android</groupId>
      <artifactId>edgent-android-hardware</artifactId>
      <version>1.3.0-SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>org.apache.edgent.android</groupId>
      <artifactId>edgent-android-topology</artifactId>
      <version>1.3.0-SNAPSHOT</version>
    </dependency>

    <!-- Analytics -->
    <dependency>
      <groupId>org.apache.edgent.android</groupId>
      <artifactId>edgent-analytics-math3</artifactId>
      <version>1.3.0-SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>org.apache.edgent.android</groupId>
      <artifactId>edgent-analytics-sensors</artifactId>
      <version>1.3.0-SNAPSHOT</version>
    </dependency>

    <!-- Utils -->
    <dependency>
      <groupId>org.apache.edgent.android</groupId>
      <artifactId>edgent-utils-metrics</artifactId>
      <version>1.3.0-SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>org.apache.edgent.android</groupId>
      <artifactId>edgent-utils-streamscope</artifactId>
      <version>1.3.0-SNAPSHOT</version>
    </dependency>

    <!-- Connectors -->
    <dependency>
      <groupId>org.apache.edgent.android</groupId>
      <artifactId>edgent-connectors-command</artifactId>
      <version>1.3.0-SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>org.apache.edgent.android</groupId>
      <artifactId>edgent-connectors-common</artifactId>
      <version>1.3.0-SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>org.apache.edgent.android</groupId>
      <artifactId>edgent-connectors-csv</artifactId>
      <version>1.3.0-SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>org.apache.edgent.android</groupId>
      <artifactId>edgent-connectors-file</artifactId>
      <version>1.3.0-SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>org.apache.edgent.android</groupId>
      <artifactId>edgent-connectors-http</artifactId>
      <version>1.3.0-SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>org.apache.edgent.android</groupId>
      <artifactId>edgent-connectors-iot</artifactId>
      <version>1.3.0-SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>org.apache.edgent.android</groupId>
      <artifactId>edgent-connectors-iotp</artifactId>
      <version>1.3.0-SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>org.apache.edgent.android</groupId>
      <artifactId>edgent-connectors-jdbc</artifactId>
      <version>1.3.0-SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>org.apache.edgent.android</groupId>
      <artifactId>edgent-connectors-kafka</artifactId>
      <version>1.3.0-SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>org.apache.edgent.android</groupId>
      <artifactId>edgent-connectors-mqtt</artifactId>
      <version>1.3.0-SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>org.apache.edgent.android</groupId>
      <artifactId>edgent-connectors-pubsub</artifactId>
      <version>1.3.0-SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>org.apache.edgent.android</groupId>
      <artifactId>edgent-connectors-rabbitmq</artifactId>
      <version>1.3.0-SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>org.apache.edgent.android</groupId>
      <artifactId>edgent-connectors-serial</artifactId>
      <version>1.3.0-SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>org.apache.edgent.android</groupId>
      <artifactId>edgent-connectors-websocket</artifactId>
      <version>1.3.0-SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>org.apache.edgent.android</groupId>
      <artifactId>edgent-connectors-websocket-jetty</artifactId>
      <version>1.3.0-SNAPSHOT</version>
    </dependency>

    <!-- Include console-servlets.war to enable a user to run
         it in their own Servlets engine.
         It's bundled in the edgent-console-server-jetty.jar.
         Note, edgent-console-server-jetty is pulled in as a dependency
         of the development provider.
    -->
    <!-- Not on android <dependency>
      <groupId>org.apache.edgent.android</groupId>
      <artifactId>edgent-console-servlets</artifactId>
      <version>1.3.0-SNAPSHOT</version>
      <type>war</type>
    </dependency-->
  </dependencies>

</project>
