<?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</groupId>
    <artifactId>edgent-providers</artifactId>
    <version>1.2.0</version>
  </parent>

  <artifactId>edgent-providers-direct</artifactId>

  <name>Apache Edgent (Java 8): Providers: Direct</name>

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

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <executions>
          <execution>
            <id>copy</id>
            <phase>pre-integration-test</phase>
            <goals>
              <goal>copy</goal>
            </goals>
            <configuration>
              <artifactItems>
                <artifactItem>
                  <groupId>org.apache.edgent</groupId>
                  <artifactId>edgent-test-appservice-applications</artifactId>
                  <version>${project.version}</version>
                  <outputDirectory>${project.build.directory}/test-resources</outputDirectory>
                  <destFileName>test-appservice-applications.jar</destFileName>
                </artifactItem>
              </artifactItems>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

  <dependencies>
    <dependency>
      <groupId>org.apache.edgent</groupId>
      <artifactId>edgent-api-topology</artifactId>
      <version>1.2.0</version>
    </dependency>
    <dependency>
      <groupId>org.apache.edgent</groupId>
      <artifactId>edgent-spi-topology</artifactId>
      <version>1.2.0</version>
    </dependency>
    <dependency>
      <groupId>org.apache.edgent</groupId>
      <artifactId>edgent-spi-graph</artifactId>
      <version>1.2.0</version>
    </dependency>
    <dependency>
      <groupId>org.apache.edgent</groupId>
      <artifactId>edgent-runtime-appservice</artifactId>
      <version>1.2.0</version>
    </dependency>
    <dependency>
      <groupId>org.apache.edgent</groupId>
      <artifactId>edgent-runtime-etiao</artifactId>
      <version>1.2.0</version>
    </dependency>
    <dependency>
      <groupId>org.apache.edgent</groupId>
      <artifactId>edgent-runtime-jsoncontrol</artifactId>
      <version>1.2.0</version>
    </dependency>

    <dependency>
      <groupId>org.apache.edgent</groupId>
      <artifactId>edgent-utils-metrics</artifactId>
      <version>1.2.0</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.edgent</groupId>
      <artifactId>edgent-utils-metrics</artifactId>
      <version>1.2.0</version>
      <type>test-jar</type>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.edgent</groupId>
      <artifactId>edgent-api-topology</artifactId>
      <version>1.2.0</version>
      <type>test-jar</type>
      <scope>test</scope>
    </dependency>
  </dependencies>

</project>
