<?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>

  <artifactId>r-demo</artifactId>
  <packaging>jar</packaging>

 <name>Apache Apex Malhar R Demo</name>
  <description>Apex demo applications for using R.</description>

  <parent>
    <groupId>org.apache.apex</groupId>
    <artifactId>malhar-demos</artifactId>
    <version>3.5.0-SNAPSHOT</version>
  </parent>

  <properties>
    <skipTests>true</skipTests>
  </properties>

  <repositories>
    <repository>
      <id>datatorrent-3rd-party</id>
      <name>Embedded repository for dependencies not available online</name>
      <url>https://www.datatorrent.com/maven/content/repositories/thirdparty</url>
      <snapshots>
        <updatePolicy>daily</updatePolicy>
      </snapshots>
      <releases>
        <updatePolicy>daily</updatePolicy>
      </releases>
    </repository>
  </repositories>

  <dependencies>
    <dependency>
      <groupId>org.rosuda</groupId>
      <artifactId>jri</artifactId>
      <version>1.0</version>
    </dependency>
    <dependency>
      <groupId>org.rosuda</groupId>
      <artifactId>rengine</artifactId>
      <version>1.0</version>
    </dependency>
    <dependency>
      <groupId>org.rosuda</groupId>
      <artifactId>jriengine</artifactId>
      <version>1.0</version>
    </dependency>
    <dependency>
      <groupId>org.apache.apex</groupId>
      <artifactId>malhar-contrib</artifactId>
      <version>${project.version}</version>
      <exclusions>
        <exclusion>
          <groupId>*</groupId>
          <artifactId>*</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
  </dependencies>
</project>
