blob: b76755c09a34a17518120d43a8d5df26c16b0753 [file] [log] [blame]
<?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
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache.pulsar</groupId>
<artifactId>pulsar-client-kafka-compat</artifactId>
<version>2.6.3</version>
<relativePath>..</relativePath>
</parent>
<artifactId>pulsar-client-kafka_0_8</artifactId>
<name>Pulsar Kafka compatibility 0.8 :: API</name>
<description>Drop-in replacement for Kafka client library that publishes and consumes
messages on Pulsar topics</description>
<properties>
<kafka_0_8.version>0.8.1.1</kafka_0_8.version>
</properties>
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>pulsar-client-kafka_0_8-original</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<createDependencyReducedPom>true</createDependencyReducedPom>
<promoteTransitiveDependencies>true</promoteTransitiveDependencies>
<artifactSet>
<includes>
<include>org.apache.kafka:kafka_2.9.2</include>
<include>org.apache.pulsar:pulsar-client-kafka_0_8-original</include>
<include>org.apache.pulsar:pulsar-client-original</include>
<include>org.apache.commons:commons-lang3</include>
<include>commons-codec:commons-codec</include>
<include>org.apache.bookkeeper:bookkeeper-common-allocator</include>
<include>commons-collections:commons-collections</include>
<include>org.asynchttpclient:*</include>
<include>io.netty:netty-codec-http</include>
<include>io.netty:netty-transport-native-epoll</include>
<include>org.reactivestreams:reactive-streams</include>
<include>com.typesafe.netty:netty-reactive-streams</include>
<include>org.javassist:javassist</include>
<include>com.google.protobuf:protobuf-java</include>
<include>com.google.guava:guava</include>
<include>com.google.code.gson:gson</include>
<include>com.fasterxml.jackson.core</include>
<include>com.fasterxml.jackson.module</include>
<include>com.fasterxml.jackson.dataformat</include>
<include>io.netty:netty</include>
<include>io.netty:netty-*</include>
<include>org.apache.pulsar:pulsar-common</include>
<include>org.apache.bookkeeper:circe-checksum</include>
<include>com.yahoo.datasketches:sketches-core</include>
<include>org.apache.httpcomponents:httpclient</include>
<include>commons-logging:commons-logging</include>
<include>org.apache.httpcomponents:httpcore</include>
<include>org.eclipse.jetty:*</include>
<include>com.yahoo.datasketches:*</include>
<include>commons-*:*</include>
<include>org.yaml:snakeyaml</include>
<include>org.objenesis:*</include>
<include>org.apache.avro:*</include>
<!-- Avro transitive dependencies-->
<include>org.codehaus.jackson:jackson-core-asl</include>
<include>org.codehaus.jackson:jackson-mapper-asl</include>
<include>com.thoughtworks.paranamer:paranamer</include>
<include>org.apache.commons:commons-compress</include>
<include>org.tukaani:xz</include>
</includes>
</artifactSet>
<filters>
<filter>
<artifact>commons-logging:commons-logging</artifact>
<includes>
<include>**</include>
</includes>
</filter>
<filter>
<artifact>org.apache.pulsar:pulsar-client-original</artifact>
<includes>
<include>**</include>
</includes>
</filter>
</filters>
<relocations>
<relocation>
<pattern>kafka.javaapi.producer.Producer</pattern>
<shadedPattern>kafka.javaapi.producer.OriginalProducer</shadedPattern>
</relocation>
<relocation>
<pattern>org.apache.kafka.clients.producer.PulsarKafkaProducer</pattern>
<shadedPattern>kafka.javaapi.producer.Producer</shadedPattern>
</relocation>
<relocation>
<pattern>kafka.javaapi.consumer.ConsumerConnector</pattern>
<shadedPattern>kafka.javaapi.consumer.OriginalConsumerConnector</shadedPattern>
</relocation>
<relocation>
<pattern>org.apache.kafka.clients.consumer.ConsumerConnector</pattern>
<shadedPattern>kafka.javaapi.consumer.ConsumerConnector</shadedPattern>
</relocation>
<relocation>
<pattern>kafka.consumer.KafkaStream</pattern>
<shadedPattern>kafka.consumer.OriginalKafkaStream</shadedPattern>
</relocation>
<relocation>
<pattern>org.apache.kafka.clients.consumer.PulsarKafkaStream</pattern>
<shadedPattern>kafka.consumer.KafkaStream</shadedPattern>
</relocation>
<relocation>
<pattern>kafka.message.MessageAndMetadata</pattern>
<shadedPattern>kafka.message.OriginalMessageAndMetadata</shadedPattern>
</relocation>
<relocation>
<pattern>org.apache.kafka.clients.consumer.PulsarMessageAndMetadata</pattern>
<shadedPattern>kafka.message.MessageAndMetadata</shadedPattern>
</relocation>
<relocation>
<pattern>kafka.consumer.ConsumerIterator</pattern>
<shadedPattern>kafka.consumer.OriginalConsumerIterator</shadedPattern>
</relocation>
<relocation>
<pattern>org.apache.kafka.clients.consumer.ConsumerIterator</pattern>
<shadedPattern>kafka.consumer.ConsumerIterator</shadedPattern>
</relocation>
<relocation>
<pattern>kafka.consumer.Consumer</pattern>
<shadedPattern>kafka.consumer.OriginalConsumer</shadedPattern>
</relocation>
<relocation>
<pattern>org.apache.kafka.clients.consumer.PulsarKafkaConsumer</pattern>
<shadedPattern>kafka.consumer.Consumer</shadedPattern>
</relocation>
<relocation>
<pattern>org.apache.kafka.clients.consumer.PulsarConsumerConfig</pattern>
<shadedPattern>kafka.consumer.ConsumerConfig</shadedPattern>
</relocation>
<!-- low-level consumer -->
<relocation>
<pattern>kafka.javaapi.consumer.SimpleConsumer</pattern>
<shadedPattern>kafka.javaapi.consumer.OriginalSimpleConsumer</shadedPattern>
</relocation>
<relocation>
<pattern>org.apache.kafka.clients.simple.consumer.PulsarKafkaSimpleConsumer</pattern>
<shadedPattern>kafka.javaapi.consumer.SimpleConsumer</shadedPattern>
</relocation>
<relocation>
<pattern>kafka.javaapi.OffsetFetchResponse</pattern>
<shadedPattern>kafka.javaapi.OriginalOffsetFetchResponse</shadedPattern>
</relocation>
<relocation>
<pattern>org.apache.kafka.clients.simple.consumer.PulsarOffsetFetchResponse</pattern>
<shadedPattern>kafka.javaapi.OffsetFetchResponse</shadedPattern>
</relocation>
<relocation>
<pattern>kafka.javaapi.OffsetFetchRequest</pattern>
<shadedPattern>kafka.javaapi.OriginalOffsetFetchRequest</shadedPattern>
</relocation>
<relocation>
<pattern>org.apache.kafka.clients.simple.consumer.PulsarOffsetFetchRequest</pattern>
<shadedPattern>kafka.javaapi.OffsetFetchRequest</shadedPattern>
</relocation>
<relocation>
<pattern>kafka.javaapi.OffsetCommitRequest</pattern>
<shadedPattern>kafka.javaapi.OriginalOffsetCommitRequest</shadedPattern>
</relocation>
<relocation>
<pattern>org.apache.kafka.clients.simple.consumer.PulsarOffsetCommitRequest</pattern>
<shadedPattern>kafka.javaapi.OffsetCommitRequest</shadedPattern>
</relocation>
<relocation>
<pattern>kafka.javaapi.FetchResponse</pattern>
<shadedPattern>kafka.javaapi.OriginalFetchResponse</shadedPattern>
</relocation>
<relocation>
<pattern>org.apache.kafka.clients.simple.consumer.PulsarFetchResponse</pattern>
<shadedPattern>kafka.javaapi.FetchResponse</shadedPattern>
</relocation>
<relocation>
<pattern>kafka.message.MessageAndOffset</pattern>
<shadedPattern>kafka.message.MessageAndOffset</shadedPattern>
</relocation>
<relocation>
<pattern>kafka.javaapi.message.ByteBufferMessageSet</pattern>
<shadedPattern>kafka.javaapi.message.OriginalByteBufferMessageSet</shadedPattern>
</relocation>
<relocation>
<pattern>org.apache.kafka.clients.simple.consumer.PulsarByteBufferMessageSet</pattern>
<shadedPattern>kafka.javaapi.message.ByteBufferMessageSet</shadedPattern>
</relocation>
<relocation>
<pattern>kafka.message.Message</pattern>
<shadedPattern>kafka.message.OriginalMessage</shadedPattern>
</relocation>
<relocation>
<pattern>org.apache.kafka.clients.simple.consumer.PulsarMessage</pattern>
<shadedPattern>kafka.message.Message</shadedPattern>
</relocation>
<relocation>
<pattern>kafka.javaapi.TopicMetadataResponse</pattern>
<shadedPattern>kafka.javaapi.OriginalTopicMetadataResponse</shadedPattern>
</relocation>
<relocation>
<pattern>org.apache.kafka.clients.simple.consumer.PulsarTopicMetadataResponse</pattern>
<shadedPattern>kafka.javaapi.TopicMetadataResponse</shadedPattern>
</relocation>
<relocation>
<pattern>kafka.javaapi.OffsetCommitResponse</pattern>
<shadedPattern>kafka.javaapi.OriginalOffsetCommitResponse</shadedPattern>
</relocation>
<relocation>
<pattern>org.apache.kafka.clients.simple.consumer.PulsarOffsetCommitResponse</pattern>
<shadedPattern>kafka.javaapi.OffsetCommitResponse</shadedPattern>
</relocation>
<relocation>
<pattern>kafka.common.OffsetMetadataAndError</pattern>
<shadedPattern>kafka.common.OriginalOffsetMetadataAndError</shadedPattern>
</relocation>
<relocation>
<pattern>org.apache.kafka.clients.simple.consumer.PulsarOffsetMetadataAndError</pattern>
<shadedPattern>kafka.common.OffsetMetadataAndError</shadedPattern>
</relocation>
<relocation>
<pattern>kafka.javaapi.OffsetResponse</pattern>
<shadedPattern>kafka.javaapi.OriginalOffsetResponse</shadedPattern>
</relocation>
<relocation>
<pattern>org.apache.kafka.clients.simple.consumer.PulsarOffsetResponse</pattern>
<shadedPattern>kafka.javaapi.OffsetResponse</shadedPattern>
</relocation>
<relocation>
<pattern>kafka.javaapi.OffsetRequest</pattern>
<shadedPattern>kafka.javaapi.OriginalOffsetRequest</shadedPattern>
</relocation>
<relocation>
<pattern>org.apache.kafka.clients.simple.consumer.PulsarOffsetRequest</pattern>
<shadedPattern>kafka.javaapi.OffsetRequest</shadedPattern>
</relocation>
<!-- General relocation rules for Pulsar client dependencies -->
<relocation>
<pattern>org.asynchttpclient</pattern>
<shadedPattern>org.apache.pulsar.shade.org.asynchttpclient</shadedPattern>
</relocation>
<relocation>
<pattern>org.apache.commons</pattern>
<shadedPattern>org.apache.pulsar.shade.org.apache.commons</shadedPattern>
</relocation>
<relocation>
<pattern>com.google</pattern>
<shadedPattern>org.apache.pulsar.shade.com.google</shadedPattern>
</relocation>
<relocation>
<pattern>com.fasterxml.jackson</pattern>
<shadedPattern>org.apache.pulsar.shade.com.fasterxml.jackson</shadedPattern>
</relocation>
<relocation>
<pattern>io.netty</pattern>
<shadedPattern>org.apache.pulsar.shade.io.netty</shadedPattern>
</relocation>
<relocation>
<pattern>com.yahoo.datasketches</pattern>
<shadedPattern>org.apache.pulsar.shade.com.yahoo.datasketches</shadedPattern>
</relocation>
<relocation>
<pattern>com.yahoo.sketches</pattern>
<shadedPattern>org.apache.pulsar.shade.com.yahoo.sketches</shadedPattern>
</relocation>
<relocation>
<pattern>org.apache.http</pattern>
<shadedPattern>org.apache.pulsar.shade.org.apache.http</shadedPattern>
</relocation>
<relocation>
<pattern>org.eclipse.jetty</pattern>
<shadedPattern>org.apache.pulsar.shade.org.eclipse</shadedPattern>
</relocation>
<relocation>
<pattern>org.reactivestreams</pattern>
<shadedPattern>org.apache.pulsar.shade.org.reactivestreams</shadedPattern>
</relocation>
<relocation>
<pattern>com.typesafe</pattern>
<shadedPattern>org.apache.pulsar.shade.com.typesafe</shadedPattern>
</relocation>
<relocation>
<pattern>com.yahoo.memory</pattern>
<shadedPattern>org.apache.pulsar.shade.com.yahoo.memory</shadedPattern>
</relocation>
<relocation>
<pattern>org.objenesis</pattern>
<shadedPattern>org.apache.pulsar.shade.org.objenesis</shadedPattern>
</relocation>
<relocation>
<pattern>org.yaml</pattern>
<shadedPattern>org.apache.pulsar.shade.org.yaml</shadedPattern>
</relocation>
<relocation>
<pattern>org.apache.avro</pattern>
<shadedPattern>org.apache.pulsar.shade.org.apache.avro</shadedPattern>
<excludes>
<exclude>org.apache.avro.reflect.AvroAlias</exclude>
<exclude>org.apache.avro.reflect.AvroDefault</exclude>
<exclude>org.apache.avro.reflect.AvroEncode</exclude>
<exclude>org.apache.avro.reflect.AvroIgnore</exclude>
<exclude>org.apache.avro.reflect.AvroMeta</exclude>
<exclude>org.apache.avro.reflect.AvroName</exclude>
<exclude>org.apache.avro.reflect.AvroSchema</exclude>
<exclude>org.apache.avro.reflect.Nullable</exclude>
<exclude>org.apache.avro.reflect.Stringable</exclude>
<exclude>org.apache.avro.reflect.Union</exclude>
</excludes>
</relocation>
<!--Avro transitive dependencies-->
<relocation>
<pattern>org.codehaus.jackson</pattern>
<shadedPattern>org.apache.pulsar.shade.org.codehaus.jackson</shadedPattern>
</relocation>
<relocation>
<pattern>com.thoughtworks.paranamer</pattern>
<shadedPattern>org.apache.pulsar.shade.com.thoughtworks.paranamer</shadedPattern>
</relocation>
<relocation>
<pattern>org.apache.commons</pattern>
<shadedPattern>org.apache.pulsar.shade.org.apache.commons</shadedPattern>
</relocation>
<relocation>
<pattern>org.tukaani</pattern>
<shadedPattern>org.apache.pulsar.shade.org.tukaani</shadedPattern>
</relocation>
<relocation>
<pattern>org.apache.bookkeeper</pattern>
<shadedPattern>org.apache.pulsar.shade.org.apache.bookkeeper</shadedPattern>
</relocation>
</relocations>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<!-- This plugin is used to run a script after the package phase in order to rename
libnetty_transport_native_epoll_x86_64.so from Netty into
liborg_apache_pulsar_shade_netty_transport_native_epoll_x86_64.so
to reflect the shade that is being applied.
-->
<artifactId>exec-maven-plugin</artifactId>
<groupId>org.codehaus.mojo</groupId>
<executions>
<execution>
<id>rename-epoll-library</id>
<phase>package</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>${project.parent.basedir}/../src/${rename.netty.native.libs}</executable>
<arguments>
<argument>${project.artifactId}</argument>
</arguments>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>