<?xml version="1.0" encoding="UTF-8"?>
<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>

    <groupId>org.apache</groupId>
    <artifactId>kafka-connect-geode</artifactId>
    <packaging>jar</packaging>
    <name>kafka-connect-geode</name>
    <organization>
        <name>Apache Software Foundation</name>
        <url>https://geode.apache.org/</url>
    </organization>
    <url>https://geode.apache.org/</url>
    <description>
        Apache Geode Sink and Source connector for Kafka Connect
    </description>
    <licenses>
        <license>
            <name>Apache License 2.0</name>
            <url>http://www.apache.org/licenses/LICENSE-2.0.html</url>
            <distribution>repo</distribution>
        </license>
    </licenses>

    <scm>
        <connection>scm:git:git://https://github.com/apache/geode-kafka-connector.git</connection>
        <developerConnection>scm:git:git@github.com:apache/geode-kafka-connector.git</developerConnection>
        <url>https://github.com/apache/geode-kafka-connector</url>
        <tag>HEAD</tag>
    </scm>

    <version>1.0.0</version>

    <properties>
        <geode.core.version>1.9.0</geode.core.version>
        <geode.cq.version>1.9.0</geode.cq.version>
        <geode.dunit.version>1.9.0</geode.dunit.version>
        <kafka.connect-api.version>2.3.1</kafka.connect-api.version>
        <log4j.version>2.13.0</log4j.version>
        <kafka_2.12.version>2.3.1</kafka_2.12.version>
        <curator-framework.version>4.2.0</curator-framework.version>
        <kafka-streams-test-utils.version>1.1.0</kafka-streams-test-utils.version>
        <kafka.connect-runtime.version>2.3.1</kafka.connect-runtime.version>
        <junit.version>4.12</junit.version>
        <mockito.version>3.2.4</mockito.version>
        <JUnitParams.version>1.1.1</JUnitParams.version>
        <awaitility.version>3.1.6</awaitility.version>
        <maven-plugin.version>3.8.1</maven-plugin.version>
        <zookeeper.version>3.5.7</zookeeper.version>
        <spotless.version>1.27.0</spotless.version>
        <rat.version>0.13</rat.version>
        <confluent.maven.repo>http://packages.confluent.io/maven/</confluent.maven.repo>
    </properties>

    <repositories>
        <repository>
            <id>confluent</id>
            <name>Confluent</name>
            <url>${confluent.maven.repo}</url>
        </repository>
    </repositories>

    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.apache.kafka/connect-api -->
        <dependency>
            <groupId>org.apache.kafka</groupId>
            <artifactId>connect-api</artifactId>
            <version>${kafka.connect-api.version}</version>
            <scope>provided</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.geode/geode-core -->
        <dependency>
            <groupId>org.apache.geode</groupId>
            <artifactId>geode-core</artifactId>
            <version>${geode.core.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.geode</groupId>
            <artifactId>geode-cq</artifactId>
            <version>${geode.cq.version}</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api -->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>${log4j.version}</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api -->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>${log4j.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>${zookeeper.version}</version>
            <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.kafka/kafka -->
        <dependency>
            <groupId>org.apache.kafka</groupId>
            <artifactId>kafka_2.12</artifactId>
            <version>${kafka_2.12.version}</version>
            <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.kafka/kafka-streams-test-utils -->
        <dependency>
            <groupId>org.apache.kafka</groupId>
            <artifactId>kafka-streams-test-utils</artifactId>
            <version>${kafka-streams-test-utils.version}</version>
            <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.curator/curator-framework -->
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>${curator-framework.version}</version>
            <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.kafka/connect-runtime -->
        <dependency>
            <groupId>org.apache.kafka</groupId>
            <artifactId>connect-runtime</artifactId>
            <version>${kafka.connect-runtime.version}</version>
            <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/junit/junit -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.mockito/mockito-core -->
        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-core</artifactId>
            <version>${mockito.version}</version>
            <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/pl.pragmatists/JUnitParams -->
        <dependency>
            <groupId>pl.pragmatists</groupId>
            <artifactId>JUnitParams</artifactId>
            <version>${JUnitParams.version}</version>
            <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.geode/geode-dunit -->
        <dependency>
            <groupId>org.apache.geode</groupId>
            <artifactId>geode-dunit</artifactId>
            <version>${geode.dunit.version}</version>
            <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.awaitility/awaitility -->
        <dependency>
            <groupId>org.awaitility</groupId>
            <artifactId>awaitility</artifactId>
            <version>${awaitility.version}</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>com.diffplug.spotless</groupId>
                <artifactId>spotless-maven-plugin</artifactId>
                <version>${spotless.version}</version>
                <executions>
                    <execution>
                        <phase>validate</phase>
                        <goals>
                            <goal>check</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <java>
                        <licenseHeader>
                            <file>etc/license-header</file>
                        </licenseHeader>
                        <eclipse>
                            <file>etc/eclipse-java-google-style.xml</file>
                            <version>4.7.1</version>
                        </eclipse>
                        <removeUnusedImports/>
                        <importOrder>
                            <file>etc/eclipseOrganizeImports.importorder</file>
                        </importOrder>
                    </java>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.rat</groupId>
                <artifactId>apache-rat-plugin</artifactId>
                <version>${rat.version}</version>
                <executions>
                    <execution>
                        <phase>validate</phase>
                        <goals>
                            <goal>check</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <excludesFile>etc/rat-excludes</excludesFile>
                </configuration>
            </plugin>
            <plugin>
                <groupId>io.confluent</groupId>
                <version>0.10.0</version>
                <artifactId>kafka-connect-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>kafka-connect</goal>
                        </goals>
                        <configuration>
                            <title>Kafka Connect Apache Geode</title>
                            <documentationUrl>https://geode.apache.org/docs/</documentationUrl>
                            <description>
                            The Apache Geode connector can be used to move data from Kakfa to Geode and vice versa. The Sink take data from a Kafka topic and puts in a region in Geode, while the Source will move any data inserted into Geode region, to Kafka topics .

                                Apache Geode is an in-memory data grid which stores data in a key-value format. When the Geode acts as a Sink, the key value pair is extracted from the Sink Record from the Kafka topic and that key-value pair is stored in Geode regions. When Geode acts as a Source, whenever a key-value pair is inserted into the region, an event is sent to connector containing the data. This data is then placed into the Kafka topic.

                                The mapping between the region and topics must be provided by the user. They must also ensure that the Apache Geode cluster is up and running along with all the required regions along with the topics in Kafka. The Apache Geode cluster must consist of at least one locator and one server.
                            </description>
                            <logo>logos/PoweredBYlogo.png</logo>

                            <supportProviderName>Apache Software Foundation / VMware</supportProviderName>
                            <supportSummary>VMware, along with Apache Geode community members support the Apache Geode Connector </supportSummary>
                            <supportUrl>https://geode.apache.org/docs/</supportUrl>
                            <supportLogo>logos/PoweredBYlogo.png</supportLogo>

                            <ownerUsername>apache</ownerUsername>
                            <ownerType>organization</ownerType>
                            <ownerName>Apache Software Foundation.</ownerName>
                            <ownerUrl>https://www.apache.org/</ownerUrl>
                            <ownerLogo>logos/APACHE-20th-logo.png</ownerLogo>

                            <componentTypes>
                                <componentType>sink</componentType>
                                <componentType>source</componentType>
                            </componentTypes>

                            <tags>
                                <tag>Apache</tag>
                                <tag>Geode</tag>
                                <tag>in-memory</tag>
                                <tag>datagrid</tag>
                                <tag>key-value</tag>
                                <tag>GemFire</tag>
                            </tags>

                            <requirements>
                                <requirement>Apache Geode 1.9 or above</requirement>
                            </requirements>

                            <deliveryGuarantee>
                                <deliveryGuarantee>atLeastOnce</deliveryGuarantee>
                            </deliveryGuarantee>

                            <confluentControlCenterIntegration>true</confluentControlCenterIntegration>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>${maven-plugin.version}</version>
                <inherited>true</inherited>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <compilerArgs>
                        <arg>-Xlint:-processing</arg>
                        <arg>-Xlint:all</arg>
                        <arg>-Werror</arg>
                    </compilerArgs>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <descriptors>
                        <descriptor>src/assembly/development.xml</descriptor>
                        <descriptor>src/assembly/package.xml</descriptor>
                    </descriptors>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>
    <profiles>
        <profile>
            <id>standalone</id>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-assembly-plugin</artifactId>
                        <configuration>
                            <descriptors>
                                <descriptor>src/assembly/standalone.xml</descriptor>
                            </descriptors>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

</project>