<?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</groupId>
    <artifactId>apache</artifactId>
    <version>18</version>
  </parent>

  <groupId>org.apache.edgent</groupId>
  <artifactId>edgent-parent</artifactId>
  <version>1.2.0</version>
  <packaging>pom</packaging>

  <name>Apache Edgent</name>
  <description>The Apache Edgent Project</description>

  <!-- Needed by the remote-resources-maven-plugin to generate the project time-span in the NOTICE files -->
  <inceptionYear>2016</inceptionYear>

  <scm>
    <connection>scm:git:https://git-wip-us.apache.org/repos/asf/incubator-edgent.git</connection>
    <developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/incubator-edgent.git</developerConnection>
    <url>https://github.com/apache/incubator-edgent</url>
    <tag>edgent-1.2.0</tag>
  </scm>

  <properties>
    <java.version>1.8</java.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputencoding>UTF-8</project.reporting.outputencoding>
    <maven.version>3.3.1</maven.version>

    <jetty.version>9.3.6.v20151106</jetty.version>
    <gson.version>2.2.4</gson.version>
    <slf4j.version>1.7.12</slf4j.version>

    <!-- URL of the ASF SonarQube server -->
    <sonar.host.url>https://builds.apache.org/analysis</sonar.host.url>
    <!-- Exclude all generated code -->
    <sonar.exclusions>file:**/generated-sources/**</sonar.exclusions>
    <!-- Tell sonar where the coverage reports are located -->
    <sonar.jacoco.reportPath>${project.build.directory}/coverage-reports/jacoco-ut.exec</sonar.jacoco.reportPath>
    <sonar.jacoco.itReportPath>${project.build.directory}/coverage-reports/jacoco-it.exec</sonar.jacoco.itReportPath>

    <remote-resources-maven-plugin.remote-resources.dir>src/main/remote-resources</remote-resources-maven-plugin.remote-resources.dir>
  </properties>

  <!-- Only configure the site distribution as the rest is handled by the apache parent -->
  <distributionManagement>
    <site>
      <id>apache.website</id>
      <url>scm:git:https://git-wip-us.apache.org/repos/asf/incubator-edgent.git</url>
    </site>
  </distributionManagement>

  <issueManagement>
    <system>Jira</system>
    <url>https://issues.apache.org/jira/browse/EDGENT</url>
  </issueManagement>

  <mailingLists>
    <mailingList>
      <name>Apache Edgent Developer List</name>
      <subscribe>dev-subscribe@edgent.apache.org</subscribe>
      <unsubscribe>dev-unsubscribe@edgent.apache.org</unsubscribe>
      <post>dev@edgent.apache.org</post>
      <archive>http://mail-archives.apache.org/mod_mbox/edgent-dev/</archive>
    </mailingList>
  </mailingLists>

  <modules>
    <module>analytics</module>
    <module>api</module>
    <module>apps</module>
    <module>connectors</module>
    <module>console</module>
    <module>providers</module>
    <module>runtime</module>
    <!-- <module>samples</module> intentionally omitted -->
    <module>spi</module>
    <module>test</module>
    <module>utils</module>
    <module>platforms</module>
  </modules>

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>com.buschmais.jqassistant</groupId>
          <artifactId>jqassistant-maven-plugin</artifactId>
          <version>1.3.0</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.6.1</version>
          <configuration>
            <source>${java.version}</source>
            <target>${java.version}</target>
            <testSource>${java.version}</testSource>
            <testTarget>${java.version}</testTarget>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.0.2</version>
          <dependencies>
            <!-- Try to get rid of out of heap errors on travis. -->
            <dependency>
              <groupId>org.codehaus.plexus</groupId>
              <artifactId>plexus-archiver</artifactId>
              <version>3.3</version>
            </dependency>
          </dependencies>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>

        <plugin>
          <groupId>org.apache.rat</groupId>
          <artifactId>apache-rat-plugin</artifactId>
          <version>0.12</version>
          <configuration>
            <!--
                Make rat output the files with missing licensed directly into the
                build output (This way we don't have to look into the rat.txt to find
                out which ones)
            -->
            <consoleOutput>true</consoleOutput>
          </configuration>
          <dependencies>
            <dependency>
              <groupId>org.apache.maven.doxia</groupId>
              <artifactId>doxia-core</artifactId>
              <version>1.6</version>
              <exclusions>
                <exclusion>
                  <groupId>xerces</groupId>
                  <artifactId>xercesImpl</artifactId>
                </exclusion>
              </exclusions>
            </dependency>
          </dependencies>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <version>2.10.4</version>
          <configuration>
            <failOnError>false</failOnError>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-source-plugin</artifactId>
          <version>3.0.1</version>
          <executions>
            <execution>
              <id>attach-sources</id>
              <phase>verify</phase>
              <goals>
                <goal>jar-no-fork</goal>
              </goals>
            </execution>
          </executions>
        </plugin>

        <plugin>
          <groupId>org.sonarsource.scanner.maven</groupId>
          <artifactId>sonar-maven-plugin</artifactId>
          <version>3.3.0.603</version>
        </plugin>

        <!--
              This is a fake plugin which is used to tell m2e (Eclipse) how
              to process this maven project.
        -->
        <plugin>
          <groupId>org.eclipse.m2e</groupId>
          <artifactId>lifecycle-mapping</artifactId>
          <version>1.0.0</version>
          <configuration>
            <lifecycleMappingMetadata>
              <pluginExecutions>
                <pluginExecution>
                  <pluginExecutionFilter>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-dependency-plugin</artifactId>
                    <versionRange>[1.0.0,)</versionRange>
                    <goals>
                      <goal>copy</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <ignore />
                  </action>
                </pluginExecution>
                <pluginExecution>
                  <pluginExecutionFilter>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-remote-resources-plugin</artifactId>
                    <versionRange>[1.0.0,)</versionRange>
                    <goals>
                      <goal>process</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <ignore />
                  </action>
                </pluginExecution>
                <pluginExecution>
                  <pluginExecutionFilter>
                    <groupId>com.googlecode.maven-download-plugin</groupId>
                    <artifactId>download-maven-plugin</artifactId>
                    <versionRange>[1.0.0,)</versionRange>
                    <goals>
                      <goal>wget</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <ignore />
                  </action>
                </pluginExecution>
              </pluginExecutions>
            </lifecycleMappingMetadata>
          </configuration>
        </plugin>

        <!-- Inject the "incubating" into the output filename
           N.B. this finalName config spec is currently ignored/overridden
           by the "apache-release" profile based configuration
           in this pom. See that config for the finalName.
           Retain this for now in case we get to the point where
           that "apache-release" config is no longer needed.
         -->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-assembly-plugin</artifactId>
          <version>2.5.3</version>
          <configuration>
            <finalName>apache-edgent-${project.version}-incubating</finalName>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-dependency-plugin</artifactId>
          <version>3.0.1</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.20</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-failsafe-plugin</artifactId>
          <version>2.20</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-site-plugin</artifactId>
          <version>3.6</version>
        </plugin>
      </plugins>
    </pluginManagement>

    <plugins>
      <!-- Check if all source files have the required apache license headers -->
      <plugin>
        <groupId>org.apache.rat</groupId>
        <artifactId>apache-rat-plugin</artifactId>
        <executions>
          <execution>
            <id>license-check</id>
            <phase>verify</phase>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <excludes>
            <!-- License texts -->
            <exclude>src/main/appended-resources/licenses/**</exclude>

            <!-- Git related files -->
            <exclude>**/.git/**</exclude>
            <exclude>**/.gitignore</exclude>

            <!-- Maven related files -->
            <exclude>**/target/**</exclude>

            <!-- Eclipse related files -->
            <exclude>**/.project</exclude>
            <exclude>**/.settings/**</exclude>
            <exclude>**/.classpath</exclude>

            <!-- IntelliJ related files -->
            <exclude>**/.idea/**</exclude>
            <exclude>**/*.iml</exclude>

            <!-- Documentation related files -->
            <exclude>.mailmap</exclude>

            <!-- Stuff needed by the Jenkins Multibranch Pipeline build -->
            <exclude>.repository/**</exclude>

            <!-- Other files
                TODO: Should be examined
            -->
            <exclude>*.patch</exclude>
            <exclude>**/.cache/**</exclude>
            <exclude>binary-release/apache-notice</exclude>
            <exclude>binary-release/ibm-contrib-notice</exclude>
            <exclude>licenses/d3-sankey.BSD</exclude>
            <exclude>licenses/d3.BSD</exclude>
            <exclude>licenses/binary-release/javax.servlet-api-3.1.0.CDDL-1.0</exclude>
            <exclude>licenses/binary-release/javax.websocket-api-1.0.CDDL-1.1</exclude>
            <exclude>licenses/binary-release/mqttv3-1.1.0.EDL-1.0</exclude>
            <exclude>licenses/binary-release/watson-iot-0.2.2.EPL-1.0</exclude>
            <exclude>samples/**</exclude>  <!-- samples are separate -->
          </excludes>
        </configuration>
      </plugin>

      <plugin>
        <groupId>com.buschmais.jqassistant</groupId>
        <artifactId>jqassistant-maven-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>scan</goal>
              <!--goal>analyze</goal-->
            </goals>
            <configuration>
              <!--failOnSeverity>MAJOR</failOnSeverity-->
            </configuration>
          </execution>
        </executions>
      </plugin>

      <!--
        This plugin doesn't really do much, it makes sure the jacoco agent
        is downloaded and that the path to this is saved in an environment
        variable so we can access this later on in the build.
      -->
      <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <version>0.7.9</version>
        <executions>
          <!--
              Prepares the property pointing to the JaCoCo runtime agent which
              is passed as VM argument when Maven the Surefire plugin is executed.
          -->
          <execution>
            <id>pre-unit-test</id>
            <goals>
              <goal>prepare-agent</goal>
            </goals>
            <configuration>
              <!--
                  Sets the name of the property containing the settings
                  for JaCoCo runtime agent.
              -->
              <propertyName>surefireArgLine</propertyName>
            </configuration>
          </execution>
          <!--
              Prepares the property pointing to the JaCoCo runtime agent which
              is passed as VM argument when Maven the Failsafe plugin is executed.
          -->
          <execution>
            <id>pre-integration-test</id>
            <phase>pre-integration-test</phase>
            <goals>
              <goal>prepare-agent</goal>
            </goals>
            <configuration>
              <!--
                  Sets the name of the property containing the settings
                  for JaCoCo runtime agent.
              -->
              <propertyName>failsafeArgLine</propertyName>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <!--
        Make the surefire execute all unit-tests
      -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <!--
                Notice the @ instead of the $ as prefix? That's late evaluation.
          -->
          <argLine>@{surefireArgLine}</argLine>
        </configuration>
      </plugin>

      <!--
        Make the failsafe execute all integration-tests
      -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-failsafe-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>integration-test</goal>
              <goal>verify</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <!--
                Notice the @ instead of the $ as prefix? That's late evaluation.
          -->
          <argLine>@{failsafeArgLine}</argLine>
        </configuration>
      </plugin>

      <!--
        Ensure the test classes are also packaged into a test-jar.
        We need this for generating the Java7 and Android modules.
      -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>test-jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <!-- Make sure the DISCLAIMER contains the incubator version -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-remote-resources-plugin</artifactId>
        <version>1.5</version><!--$NO-MVN-MAN-VER$-->
        <executions>
          <execution>
            <id>process-resource-bundles</id>
            <goals>
              <goal>process</goal>
            </goals>
            <configuration>
              <resourceBundles>
                <!-- Will generate META-INF/{DEPENDENCIES,LICENSE,NOTICE} -->
                <resourceBundle>org.apache:apache-jar-resource-bundle:1.4</resourceBundle>
                <!-- Will generate META-INF/DISCLAIMER  -->
                <resourceBundle>org.apache:apache-incubator-disclaimer-resource-bundle:1.1</resourceBundle>
              </resourceBundles>
              <!-- Content in this directory will be appended to generated resources -->
              <appendedResourcesDirectory>${remote-resources-maven-plugin.remote-resources.dir}</appendedResourcesDirectory>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <!-- Configure the Site generation -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-site-plugin</artifactId>
        <!-- get errors with site:site task when using the default (3.6) version -->
        <version>3.4</version><!--$NO-MVN-MAN-VER$-->
        <configuration>
          <generateReports>true</generateReports>
          <generateSitemap>true</generateSitemap>
          <relativizeDecorationLinks>false</relativizeDecorationLinks>
          <locales>en</locales>
          <inputEncoding>${project.build.sourceEncoding}</inputEncoding>
          <outputEncoding>${project.reporting.outputencoding}</outputEncoding>
        </configuration>
        <dependencies>
          <!-- All dependencies needed by the reflow skin -->
          <dependency>
            <groupId>lt.velykis.maven.skins</groupId>
            <artifactId>reflow-velocity-tools</artifactId>
            <version>1.1.1</version>
          </dependency>
          <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity</artifactId>
            <version>1.7</version>
          </dependency>
          <dependency>
            <groupId>org.apache.maven.doxia</groupId>
            <artifactId>doxia-core</artifactId>
            <version>1.6</version>
          </dependency>
          <!-- add support for scm/git site deployment -->
          <dependency>
            <groupId>org.apache.maven.wagon</groupId>
            <artifactId>wagon-scm</artifactId>
            <version>2.12</version>
          </dependency>
          <dependency>
            <groupId>org.apache.maven.scm</groupId>
            <artifactId>maven-scm-api</artifactId>
            <version>1.9.5</version>
          </dependency>
          <dependency>
            <groupId>org.apache.maven.scm</groupId>
            <artifactId>maven-scm-manager-plexus</artifactId>
            <version>1.9.5</version>
          </dependency>
          <dependency>
            <groupId>org.apache.maven.scm</groupId>
            <artifactId>maven-scm-provider-gitexe</artifactId>
            <version>1.9.5</version>
          </dependency>
          <!-- Add support for asciidoctor -->
          <dependency>
            <groupId>org.asciidoctor</groupId>
            <artifactId>asciidoctor-maven-plugin</artifactId>
            <version>1.5.5</version>
          </dependency>
          <dependency>
            <groupId>org.jruby</groupId>
            <artifactId>jruby-complete</artifactId>
            <version>9.1.10.0</version>
          </dependency>
          <dependency>
            <groupId>org.asciidoctor</groupId>
            <artifactId>asciidoctorj</artifactId>
            <version>1.5.5</version>
          </dependency>
          <dependency>
            <groupId>org.asciidoctor</groupId>
            <artifactId>asciidoctorj-diagram</artifactId>
            <version>1.5.4</version>
          </dependency>
        </dependencies>
      </plugin>

      <!--
        Make the maven-site-plugin stage the output in the "asf-site" branch
      -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-scm-publish-plugin</artifactId>
        <executions>
          <execution>
            <id>scm-publish</id>
            <phase>site-deploy</phase>
            <!-- deploy site with maven-scm-publish-plugin -->
            <goals>
              <goal>publish-scm</goal>
            </goals>
            <configuration>
              <!-- mono-module doesn't require site:stage -->
              <content>${project.build.directory}/site</content>
              <!-- branch where to deploy -->
              <scmBranch>asf-site</scmBranch>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <!--
        Verify that the generated classes match Java 8 signatures
      -->
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>animal-sniffer-maven-plugin</artifactId>
        <version>1.15</version>
        <executions>
          <execution>
            <id>check-jdk-signatures</id>
            <phase>process-test-classes</phase>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <signature>
            <groupId>org.codehaus.mojo.signature</groupId>
            <artifactId>java18</artifactId>
            <version>1.0</version>
          </signature>
        </configuration>
      </plugin>
    </plugins>
  </build>

  <reporting>
    <plugins>
      <plugin>
        <groupId>com.buschmais.jqassistant</groupId>
        <artifactId>jqassistant-maven-plugin</artifactId>
        <reportSets>
          <reportSet>
            <reports>
              <report>report</report>
            </reports>
          </reportSet>
        </reportSets>
      </plugin>

      <!-- Generates a changelog report from GIT commits -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-changelog-plugin</artifactId>
        <version>2.3</version>
        <configuration>
          <!-- Automatically link Jira issues -->
          <issueLinkUrl>https://issues.apache.org/jira/browse/%ISSUE%</issueLinkUrl>
        </configuration>
      </plugin>

      <!-- Generates a report with the details of the unit- and integrationtests -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-report-plugin</artifactId>
        <version>2.20</version>
        <reportSets>
          <reportSet>
            <reports>
              <report>report-only</report>
              <report>failsafe-report-only</report>
            </reports>
          </reportSet>
        </reportSets>
      </plugin>

      <!-- Generates a report with the test coverages -->
      <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <version>0.7.9</version>
        <reportSets>
          <reportSet>
            <reports>
              <report>report</report>
              <report>report-integration</report>
            </reports>
          </reportSet>
        </reportSets>
      </plugin>

      <!-- Generates a report with the SonarQube analysis reports -->
      <plugin>
        <groupId>org.codehaus.sonar-plugins</groupId>
        <artifactId>maven-report</artifactId>
        <version>0.1</version>
      </plugin>

      <!-- Generate the JavaDoc API documentation -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>3.0.0-M1</version><!-- was 2.10.4 -->
        <reportSets>
          <reportSet>
            <id>non-aggregate</id>
            <reports>
              <report>javadoc-no-fork</report>
              <report>test-javadoc-no-fork</report>
            </reports>
          </reportSet>
          <!-- Generate an aggregate report only in the root -->
          <!-- Disabled this as this runs before the build of the modules and the java7 and android modules javadocs
          require the java8 versions being built first -->
          <!--reportSet>
            <id>aggregate</id>
            <inherited>false</inherited>
            <reports>
              <report>aggregate</report>
            </reports>
          </reportSet-->
        </reportSets>
        <!-- hmm... configuration is having no effect for 'mvn javadoc:aggregate'
          only for 'mvn site'
         -->
        <configuration>
          <windowtitle>${project.name} (incubating) v${project.version} API</windowtitle>
          <doctitle>${project.name} (incubating) v${project.version} API</doctitle>
          <overview>${basedir}/edgent_overview.html</overview>
          <!-- Exclude
            o.a.e.test.*               don't want showing up in Other Packages
            o.a.e.oplet.core.mbeans    there are no classes and it shows up in Low-Level Packages
            o.a.e.connectors.*.runtime it's impl not API
                sigh, maven seems to really only support '*' at the beginning or end.
                (what about '**' ?)
                When in the middle like above it's causing an empty, hence omitted,
                Connectors group (it's like excluding o.a.e.connectors.*)
                and o.e.e.runtime.* is being omitted from Other Packages
                (it's like excluding *.runtime).
                So we have to enumerate each connector runtime exclusion.
            o.a.e.javax.websocket      it's impl not API
            o.a.e.console.*            it's impl not API
            o.a.e.analytics.math3.utils.Java7Helper   it's impl not API
            o.a.e.analytics.sensors.utils.Java7Helper it's impl not API
           -->
          <excludePackageNames>
            org.apache.edgent.test.*:org.apache.edgent.oplet.core.mbeans:org.apache.edgent.console.*:org.apache.edgent.analytics.math3.utils.Java7Helper:org.apache.edgent.analytics.sensors.utils.Java7Helper:*.connectors.command.runtime:*.connectors.file.runtime:*.connectors.http.runtime:*.connectors.iotp.runtime:*.connectors.jdbc.runtime:*.connectors.kafka.runtime:*.connectors.mqtt.runtime:*.connectors.runtime:*.connectors.wsclient.javax.websocket.runtime:org.apache.edgent.javax.websocket
          </excludePackageNames>
          <groups>
            <group>
              <title>Edgent Providers</title>
              <packages>org.apache.edgent.providers.*</packages>
            </group>
            <group>
              <title>Edgent API</title>
              <packages>
                org.apache.edgent.execution:org.apache.edgent.function:org.apache.edgent.topology:org.apache.edgent.topology.json:org.apache.edgent.topology.mbeans:org.apache.edgent.topology.plumbing:org.apache.edgent.topology.services:org.apache.edgent.execution.*
              </packages>
            </group>
            <group>
              <title>Edgent Analytics</title>
              <packages>org.apache.edgent.analytics.*</packages>
            </group>
            <group>
              <title>Edgent Connectors</title>
              <packages>org.apache.edgent.connectors.*</packages>
            </group>
            <group>
              <title>Edgent Utilities</title>
              <packages>
                org.apache.edgent.metrics:org.apache.edgent.metrics.*:org.apache.edgent.streamscope:org.apache.edgent.streamscope.*
              </packages>
            </group>
            <group>
              <title>Edgent Tester</title>
              <packages>org.apache.edgent.topology.tester:org.apache.edgent.topology.tester.*</packages>
            </group>
            <group>
              <title>Edgent Low-Level API</title>
              <packages>
                org.apache.edgent.graph:org.apache.edgent.graph.*:org.apache.edgent.oplet:org.apache.edgent.oplet.*:org.apache.edgent.window
              </packages>
            </group>
            <group>
              <title>Edgent SPI</title>
              <packages>org.apache.edgent.topology.spi:org.apache.edgent.topology.spi.*</packages>
            </group>
            <!-- everything else is automatically added to a "Other Packages" group -->
          </groups>
        </configuration>
      </plugin>
    </plugins>
  </reporting>

  <profiles>
    <profile>
      <!-- configure -Pdistribution to include our binary distribution projects. -->
      <id>distribution</id>
      <modules>
        <module>distribution</module>
      </modules>
    </profile>
    <profile>
      <!-- configure -Papache-release source release bundle processing -->
      <id>apache-release</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <executions>
              <execution>
                <id>source-release-assembly</id>
                <phase>package</phase>
                <goals>
                  <goal>single</goal>
                </goals>
                <!-- heads up: combine.self in the following is highlighted
                    as an error in Eclipse's xml editor view.
                    Just ignore that.
                    See  https://issues.apache.org/jira/browse/MNG-5454  sigh.
                 -->
                <configuration combine.self="override">
                  <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>
                  <descriptors>
                    <descriptor>src/assembly/source-release.xml</descriptor>
                  </descriptors>
                  <tarLongFileMode>gnu</tarLongFileMode>
                  <finalName>apache-edgent-${project.version}-incubating</finalName>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>

  <dependencies>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>${slf4j.version}</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>io.dropwizard.metrics</groupId>
      <artifactId>metrics-core</artifactId>
      <version>3.1.2</version>
      <exclusions>
        <exclusion>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-api</artifactId>
        </exclusion>
      </exclusions>
    </dependency>

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-jdk14</artifactId>
      <version>${slf4j.version}</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <repositories>
    <repository>
      <id>apache-release</id>
      <url>https://repository.apache.org/content/repositories/releases</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
    <repository>
      <id>apache-snapshots</id>
      <url>https://repository.apache.org/content/repositories/snapshots</url>
      <releases>
        <enabled>false</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </repository>
  </repositories>

  <pluginRepositories>
    <pluginRepository>
      <id>apache-plugins-release</id>
      <url>https://repository.apache.org/content/repositories/releases</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </pluginRepository>
    <pluginRepository>
      <id>apache-plugins-snapshots</id>
      <url>https://repository.apache.org/content/repositories/snapshots</url>
      <releases>
        <enabled>false</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </pluginRepository>
  </pluginRepositories>

</project>
