<?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.hop</groupId>
    <artifactId>hop-assemblies-plugins-tech</artifactId>
    <version>2.5.0</version>
  </parent>

  <artifactId>hop-assemblies-plugins-tech-cassandra</artifactId>
  <version>2.5.0</version>
  <packaging>pom</packaging>
  <name>Hop Assemblies Plugins Technology Cassandra</name>
  <description />

  <properties>
    <cassandra-all.version>4.1.1</cassandra-all.version>
    <datastax-java-driver.version>4.15.0</datastax-java-driver.version>
    <datastax-native-protocol.version>1.5.1</datastax-native-protocol.version>
  </properties>

  <dependencies>
    <!-- Cassandra: APL -->
    <dependency>
      <groupId>org.apache.cassandra</groupId>
      <artifactId>cassandra-all</artifactId>
      <version>${cassandra-all.version}</version>
    </dependency>
    <dependency>
      <groupId>com.datastax.oss</groupId>
      <artifactId>java-driver-core</artifactId>
      <version>${datastax-java-driver.version}</version>
    </dependency>
    <dependency>
      <groupId>com.datastax.oss</groupId>
      <artifactId>java-driver-query-builder</artifactId>
      <version>${datastax-java-driver.version}</version>
    </dependency>
    <dependency>
      <groupId>com.datastax.oss</groupId>
      <artifactId>native-protocol</artifactId>
      <version>${datastax-native-protocol.version}</version>
    </dependency>

    <dependency>
      <groupId>org.apache.hop</groupId>
      <artifactId>hop-plugins-tech-cassandra</artifactId>
      <version>2.5.0</version>
    </dependency>
  </dependencies>

</project>