<?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.plc4x</groupId>
    <artifactId>plc4x-parent</artifactId>
    <version>0.9.0-SNAPSHOT</version>
  </parent>

  <groupId>org.apache.plc4x.sandbox</groupId>
  <artifactId>plc4x-sandbox</artifactId>
  <packaging>pom</packaging>

  <name>Sandbox</name>
  <description>Place where new stuff is located before it is regarded production-quality.</description>

  <modules>
    <module>code-gen</module>
    <module>discovery</module>
    <module>plc-simulator</module>

    <module>test-java-bacnetip-driver</module>
    <module>test-java-df1-driver</module>

    <module>test-streampipes-plc4x-adapters</module>
    <module>test-streampipes-plc4x-processors</module>
    <module>test-streampipes-plc4x-shared</module>

    <!-- Examples -->
    <module>hello-influx-data-collection</module>
  </modules>

  <build>
    <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-dependency-plugin</artifactId>
          <configuration>
            <usedDependencies combine.children="append">
                <usedDependency>org.slf4j:log4j-over-slf4j</usedDependency>
            </usedDependencies>
          </configuration>
        </plugin>

        <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <configuration>
          <skip>true</skip>
        </configuration>
        </plugin>
    </plugins>
  </build>

  <dependencies>
    <!-- JUnit 5 Support -->
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter</artifactId>
    </dependency>
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.codehaus.groovy</groupId>
      <artifactId>groovy-test-junit5</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <profiles>
    <!-- Build PLC4X including the C modules -->
    <profile>
      <id>with-c</id>
      <modules>
        <module>plc4c</module>
      </modules>
    </profile>

    <!-- Build PLC4X including the C++ modules -->
    <profile>
      <id>with-cpp</id>
      <modules>
        <module>plc4cpp</module>
      </modules>
    </profile>

    <!-- Build PLC4X including the .Net modules -->
    <profile>
      <id>with-dotnet</id>
      <modules>
        <module>plc4net</module>
      </modules>
    </profile>

    <!-- Build PLC4X including the Python modules -->
    <profile>
      <id>with-python</id>
      <modules>
        <module>plc4py</module>
      </modules>
    </profile>

  </profiles>

</project>
