This is an automated email from the ASF dual-hosted git repository. arvid pushed a commit to branch v4.0 in repository https://gitbox.apache.org/repos/asf/flink-connector-kafka.git
commit 681e686a4c9865301de0652e7fc7388f662f5a65 Author: Arvid Heise <ar...@apache.org> AuthorDate: Thu Apr 10 21:00:06 2025 +0200 [FLINK-37644] Enforce precise dependencies + ban offenders - Make sure that all used libraries are explicitly listed. - Move all versions to dependency management - Ban imports on guava in prod code - Ban guava dependency in prod - Ban mockito and powermock in tests --- .../flink-end-to-end-tests-common-kafka/pom.xml | 143 +-- .../flink-streaming-kafka-test-base/pom.xml | 15 +- .../flink-streaming-kafka-test/pom.xml | 45 +- flink-connector-kafka/pom.xml | 644 +++++++----- flink-python/pom.xml | 9 +- flink-sql-connector-kafka/pom.xml | 28 + pom.xml | 1095 +++++++++++--------- tools/maven/checkstyle.xml | 6 +- tools/maven/suppressions.xml | 3 + 9 files changed, 1152 insertions(+), 836 deletions(-) diff --git a/flink-connector-kafka-e2e-tests/flink-end-to-end-tests-common-kafka/pom.xml b/flink-connector-kafka-e2e-tests/flink-end-to-end-tests-common-kafka/pom.xml index feb3923e..e9b9be57 100644 --- a/flink-connector-kafka-e2e-tests/flink-end-to-end-tests-common-kafka/pom.xml +++ b/flink-connector-kafka-e2e-tests/flink-end-to-end-tests-common-kafka/pom.xml @@ -43,15 +43,29 @@ under the License. <artifactId>flink-connector-kafka</artifactId> <version>${project.version}</version> </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + </dependency> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-core</artifactId> + </dependency> + <dependency> + <groupId>org.apache.kafka</groupId> + <artifactId>kafka-clients</artifactId> + </dependency> + <dependency> + <groupId>org.testcontainers</groupId> + <artifactId>testcontainers</artifactId> + </dependency> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + </dependency> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-test-utils-junit</artifactId> - <scope>compile</scope> - </dependency> - <dependency> - <groupId>org.junit.jupiter</groupId> - <artifactId>junit-jupiter</artifactId> - <scope>compile</scope> </dependency> <dependency> <groupId>org.apache.flink</groupId> @@ -67,18 +81,47 @@ under the License. </exclusion> </exclusions> </dependency> - <dependency> - <groupId>org.apache.flink</groupId> - <artifactId>flink-connector-base</artifactId> - <version>${flink.version}</version> - <scope>test</scope> - </dependency> - - <dependency> - <groupId>org.apache.kafka</groupId> - <artifactId>kafka-clients</artifactId> - <version>${kafka.version}</version> - </dependency> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-connector-kafka</artifactId> + <version>${project.version}</version> + <type>test-jar</type> + </dependency> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-runtime</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-connector-base</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-test-utils</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-core-api</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.hamcrest</groupId> + <artifactId>hamcrest-core</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.assertj</groupId> + <artifactId>assertj-core</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.junit.jupiter</groupId> + <artifactId>junit-jupiter-api</artifactId> + <scope>test</scope> + </dependency> <!-- The following dependencies are for connector/format sql-jars that we copy using the maven-dependency-plugin. When extending the test @@ -90,89 +133,59 @@ under the License. <!-- Used by maven-dependency-plugin --> <groupId>org.apache.flink</groupId> <artifactId>flink-sql-avro</artifactId> - <version>${flink.version}</version> <scope>test</scope> </dependency> <dependency> <!-- Used by maven-dependency-plugin --> <groupId>org.apache.flink</groupId> <artifactId>flink-sql-avro-confluent-registry</artifactId> - <version>${flink.version}</version> <scope>test</scope> </dependency> - <dependency> - <groupId>org.testcontainers</groupId> - <artifactId>kafka</artifactId> - </dependency> + <dependency> + <groupId>org.testcontainers</groupId> + <artifactId>kafka</artifactId> + </dependency> + <dependency> + <groupId>org.testcontainers</groupId> + <artifactId>junit-jupiter</artifactId> + </dependency> <dependency> - <!-- https://mvnrepository.com/artifact/io.confluent/kafka-avro-serializer --> <groupId>io.confluent</groupId> <artifactId>kafka-avro-serializer</artifactId> - <version>${confluent.version}</version> <scope>test</scope> - <exclusions> - <exclusion> - <groupId>com.google.guava</groupId> - <artifactId>guava</artifactId> - </exclusion> - </exclusions> </dependency> <dependency> <groupId>io.confluent</groupId> <artifactId>kafka-schema-registry-client</artifactId> - <version>${confluent.version}</version> <scope>test</scope> <exclusions> <exclusion> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> </exclusion> - <exclusion> - <groupId>com.google.guava</groupId> - <artifactId>guava</artifactId> - </exclusion> </exclusions> </dependency> <dependency> <groupId>org.apache.avro</groupId> <artifactId>avro</artifactId> - <version>${avro.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-connector-test-utils</artifactId> - <version>${flink.version}</version> <exclusions> <exclusion> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> </exclusion> </exclusions> + <scope>test</scope> </dependency> - <dependency> - <groupId>org.apache.flink</groupId> - <artifactId>flink-connector-kafka</artifactId> - <version>${project.version}</version> - <type>test-jar</type> - </dependency> - <dependency> - <groupId>org.hamcrest</groupId> - <artifactId>hamcrest-all</artifactId> - <version>${hamcrest.version}</version> - <scope>test</scope> - </dependency> - <!-- Needed by Schema Registry --> - <dependency> - <groupId>com.google.guava</groupId> - <artifactId>guava</artifactId> - <version>${guava.version}</version> - </dependency> </dependencies> <build> @@ -194,7 +207,6 @@ under the License. <artifactItem> <groupId>org.apache.flink</groupId> <artifactId>flink-streaming-kafka-test</artifactId> - <version>${project.version}</version> <type>jar</type> <overWrite>true</overWrite> <outputDirectory>${project.build.directory}/dependencies</outputDirectory> @@ -202,7 +214,6 @@ under the License. <artifactItem> <groupId>org.apache.flink</groupId> <artifactId>flink-sql-avro</artifactId> - <version>${flink.version}</version> <destFileName>avro.jar</destFileName> <type>jar</type> <outputDirectory>${project.build.directory}/dependencies</outputDirectory> @@ -210,7 +221,6 @@ under the License. <artifactItem> <groupId>org.apache.flink</groupId> <artifactId>flink-sql-avro-confluent-registry</artifactId> - <version>${flink.version}</version> <destFileName>avro-confluent.jar</destFileName> <type>jar</type> <outputDirectory>${project.build.directory}/dependencies</outputDirectory> @@ -226,7 +236,6 @@ under the License. <artifactItem> <groupId>org.apache.flink</groupId> <artifactId>flink-connector-kafka</artifactId> - <version>${project.version}</version> <destFileName>kafka-connector.jar</destFileName> <type>jar</type> <outputDirectory>${project.build.directory}/dependencies</outputDirectory> @@ -234,7 +243,6 @@ under the License. <artifactItem> <groupId>org.apache.flink</groupId> <artifactId>flink-connector-test-utils</artifactId> - <version>${flink.version}</version> <destFileName>flink-connector-testing.jar</destFileName> <type>jar</type> <outputDirectory>${project.build.directory}/dependencies</outputDirectory> @@ -242,20 +250,13 @@ under the License. <artifactItem> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> - <version>${kafka.version}</version> <destFileName>kafka-clients.jar</destFileName> <type>jar</type> <outputDirectory>${project.build.directory}/dependencies</outputDirectory> </artifactItem> - <artifactItem> - <groupId>com.google.guava</groupId> - <artifactId>guava</artifactId> - <version>${guava.version}</version> - <destFileName>guava.jar</destFileName> - <type>jar</type> - <outputDirectory>${project.build.directory}/dependencies</outputDirectory> - </artifactItem> </artifactItems> + <ignoredUnusedDeclaredDependencies>org.apache.flink:flink-streaming-kafka-test,org.apache.flink:flink-sql-avro,org.apache.flink:flink-sql-avro-confluent-registry,org.apache.flink:flink-connector-base + </ignoredUnusedDeclaredDependencies> </configuration> </plugin> </plugins> diff --git a/flink-connector-kafka-e2e-tests/flink-streaming-kafka-test-base/pom.xml b/flink-connector-kafka-e2e-tests/flink-streaming-kafka-test-base/pom.xml index ed7defdf..edd117cb 100644 --- a/flink-connector-kafka-e2e-tests/flink-streaming-kafka-test-base/pom.xml +++ b/flink-connector-kafka-e2e-tests/flink-streaming-kafka-test-base/pom.xml @@ -33,11 +33,16 @@ under the License. <packaging>jar</packaging> <dependencies> - <dependency> - <groupId>org.apache.flink</groupId> - <artifactId>flink-streaming-java</artifactId> - <version>${flink.version}</version> - </dependency> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-core</artifactId> + <version>${flink.version}</version> + </dependency> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-runtime</artifactId> + <version>${flink.version}</version> + </dependency> </dependencies> </project> diff --git a/flink-connector-kafka-e2e-tests/flink-streaming-kafka-test/pom.xml b/flink-connector-kafka-e2e-tests/flink-streaming-kafka-test/pom.xml index 55e1f86e..7cfd5858 100644 --- a/flink-connector-kafka-e2e-tests/flink-streaming-kafka-test/pom.xml +++ b/flink-connector-kafka-e2e-tests/flink-streaming-kafka-test/pom.xml @@ -43,11 +43,29 @@ under the License. <version>${project.version}</version> </dependency> - <dependency> - <groupId>org.apache.flink</groupId> - <artifactId>flink-streaming-java</artifactId> - <version>${flink.version}</version> - </dependency> + <dependency> + <groupId>org.apache.kafka</groupId> + <artifactId>kafka-clients</artifactId> + </dependency> + + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-core</artifactId> + <scope>provided</scope> + </dependency> + + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-connector-base</artifactId> + <scope>provided</scope> + </dependency> + + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-runtime</artifactId> + <scope>provided</scope> + </dependency> + </dependencies> <build> @@ -82,6 +100,23 @@ under the License. </execution> </executions> </plugin> + + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-dependency-plugin</artifactId> + <executions> + <execution> + <id>analyze-deps</id> + <goals> + <goal>analyze</goal> + </goals> + <phase>verify</phase> + <configuration> + <ignoredUnusedDeclaredDependencies>org.apache.flink:flink-connector-base</ignoredUnusedDeclaredDependencies> + </configuration> + </execution> + </executions> + </plugin> </plugins> </build> diff --git a/flink-connector-kafka/pom.xml b/flink-connector-kafka/pom.xml index 4c4d3e36..100a00b0 100644 --- a/flink-connector-kafka/pom.xml +++ b/flink-connector-kafka/pom.xml @@ -18,71 +18,151 @@ 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"> + 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> + <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.apache.flink</groupId> - <artifactId>flink-connector-kafka-parent</artifactId> - <version>4.0.0</version> - </parent> + <parent> + <groupId>org.apache.flink</groupId> + <artifactId>flink-connector-kafka-parent</artifactId> + <version>4.0.0</version> + </parent> - <artifactId>flink-connector-kafka</artifactId> - <name>Flink : Connectors : Kafka</name> + <artifactId>flink-connector-kafka</artifactId> + <name>Flink : Connectors : Kafka</name> - <packaging>jar</packaging> + <packaging>jar</packaging> - <properties> - <flink.connector.module.config><!-- + <properties> + <flink.connector.module.config><!-- FlinkKafkaProducerBaseTest --> --add-opens=java.base/java.lang=ALL-UNNAMED <!-- FlinkKafkaProducerBaseTest --> --add-opens=java.base/java.util.concurrent.locks=ALL-UNNAMED <!-- FlinkKafkaConsumerBaseTest --> --add-opens=java.base/java.util=ALL-UNNAMED <!-- - KafkaProducerExactlyOnceITCase --> --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED - </flink.connector.module.config> - </properties> + KafkaProducerExactlyOnceITCase --> + --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED + </flink.connector.module.config> + </properties> - <dependencies> + <dependencies> - <!-- Core --> + <!-- Core --> - <dependency> - <groupId>org.apache.flink</groupId> - <artifactId>flink-streaming-java</artifactId> - <version>${flink.version}</version> - <scope>provided</scope> - </dependency> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-streaming-java</artifactId> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-annotations</artifactId> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-connector-datagen</artifactId> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-core</artifactId> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-core-api</artifactId> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-metrics-core</artifactId> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-runtime</artifactId> + <scope>provided</scope> + </dependency> - <!-- Connectors --> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + <scope>provided</scope> + </dependency> - <dependency> - <groupId>org.apache.flink</groupId> - <artifactId>flink-connector-base</artifactId> - <version>${flink.version}</version> - <scope>provided</scope> - </dependency> + <!-- Connectors --> - <!-- Table ecosystem --> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-connector-base</artifactId> + <scope>provided</scope> + </dependency> + + <!-- Directly used libraries --> + + <dependency> + <groupId>com.google.code.findbugs</groupId> + <artifactId>jsr305</artifactId> + <scope>provided</scope> + </dependency> + + <dependency> + <groupId>org.apache.commons</groupId> + <artifactId>commons-lang3</artifactId> + </dependency> + + <dependency> + <groupId>com.fasterxml.jackson.core</groupId> + <artifactId>jackson-core</artifactId> + </dependency> - <!-- Projects depending on this project won't depend on flink-table-*. --> - <dependency> - <groupId>org.apache.flink</groupId> - <artifactId>flink-table-api-java-bridge</artifactId> - <version>${flink.version}</version> - <scope>provided</scope> - <optional>true</optional> - </dependency> + <dependency> + <groupId>com.fasterxml.jackson.core</groupId> + <artifactId>jackson-databind</artifactId> + </dependency> + + <dependency> + <!-- Java 8 Date/time --> + <groupId>com.fasterxml.jackson.datatype</groupId> + <artifactId>jackson-datatype-jsr310</artifactId> + </dependency> + + <dependency> + <!-- Java 8 Datatypes --> + <groupId>com.fasterxml.jackson.datatype</groupId> + <artifactId>jackson-datatype-jdk8</artifactId> + </dependency> + + <!-- Table ecosystem --> + + <!-- Projects depending on this project won't depend on flink-table-*. --> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-table-api-java-bridge</artifactId> + <scope>provided</scope> + <optional>true</optional> + </dependency> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-table-api-java</artifactId> + <scope>provided</scope> + <optional>true</optional> + </dependency> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-table-common</artifactId> + <scope>provided</scope> + <optional>true</optional> + </dependency> - <!-- Kafka --> + <!-- Kafka --> - <dependency> - <groupId>org.apache.kafka</groupId> - <artifactId>kafka-clients</artifactId> - <version>${kafka.version}</version> - </dependency> + <dependency> + <groupId>org.apache.kafka</groupId> + <artifactId>kafka-clients</artifactId> + </dependency> - <!-- Tests --> + <!-- Tests --> <dependency> <groupId>com.google.guava</groupId> @@ -90,225 +170,259 @@ under the License. <scope>test</scope> </dependency> - <dependency> - <groupId>org.hamcrest</groupId> - <artifactId>hamcrest-all</artifactId> - <version>${hamcrest.version}</version> - <scope>test</scope> - </dependency> - - <dependency> - <groupId>org.powermock</groupId> - <artifactId>powermock-module-junit4</artifactId> - <version>${powermock.version}</version> - <type>jar</type> - <scope>test</scope> - </dependency> - - <dependency> - <groupId>org.powermock</groupId> - <artifactId>powermock-api-mockito2</artifactId> - <version>${powermock.version}</version> - <type>jar</type> - <scope>test</scope> - <exclusions> - <exclusion> - <groupId>org.mockito</groupId> - <artifactId>mockito-core</artifactId> - </exclusion> - </exclusions> - </dependency> - - <dependency> - <groupId>org.apache.flink</groupId> - <artifactId>flink-core</artifactId> - <version>${flink.version}</version> - <scope>test</scope> - <type>test-jar</type> - </dependency> - - <dependency> - <groupId>org.apache.flink</groupId> - <artifactId>flink-streaming-java</artifactId> - <version>${flink.version}</version> - <scope>test</scope> - <type>test-jar</type> - </dependency> - - <dependency> - <groupId>org.testcontainers</groupId> - <artifactId>kafka</artifactId> - <scope>test</scope> - </dependency> - - <dependency> - <groupId>org.testcontainers</groupId> - <artifactId>junit-jupiter</artifactId> - <scope>test</scope> - </dependency> - - <dependency> - <groupId>org.yaml</groupId> - <artifactId>snakeyaml</artifactId> - <version>2.2</version> - <scope>test</scope> - </dependency> - - <dependency> - <groupId>org.apache.flink</groupId> - <artifactId>flink-test-utils</artifactId> - <version>${flink.version}</version> - <scope>test</scope> - </dependency> - - <dependency> - <groupId>org.apache.flink</groupId> - <artifactId>flink-connector-test-utils</artifactId> - <version>${flink.version}</version> - <scope>test</scope> - </dependency> - - <dependency> - <groupId>org.apache.flink</groupId> - <artifactId>flink-runtime</artifactId> - <version>${flink.version}</version> - <type>test-jar</type> - <scope>test</scope> - </dependency> - - <dependency> - <groupId>org.apache.flink</groupId> - <artifactId>flink-connector-base</artifactId> - <version>${flink.version}</version> - <scope>test</scope> - <type>test-jar</type> - </dependency> - - <dependency> - <groupId>org.apache.flink</groupId> - <artifactId>flink-metrics-jmx</artifactId> - <version>${flink.version}</version> - <scope>test</scope> - </dependency> - - <!-- Kafka table factory testing --> - <dependency> - <groupId>org.apache.flink</groupId> - <artifactId>flink-table-common</artifactId> - <version>${flink.version}</version> - <type>test-jar</type> - <scope>test</scope> - </dependency> - - <dependency> - <groupId>org.apache.flink</groupId> - <artifactId>flink-table-test-utils</artifactId> - <version>${flink.version}</version> - <scope>test</scope> - </dependency> - - <dependency> - <groupId>org.apache.flink</groupId> - <artifactId>flink-table-api-scala-bridge_${scala.binary.version}</artifactId> - <version>${flink.version}</version> - <scope>test</scope> - </dependency> - - <dependency> - <groupId>org.apache.flink</groupId> - <artifactId>flink-table-planner_${scala.binary.version}</artifactId> - <version>${flink.version}</version> - <type>test-jar</type> - <scope>test</scope> - </dependency> - - <!-- Kafka SQL IT test with formats --> - <dependency> - <groupId>org.apache.flink</groupId> - <artifactId>flink-json</artifactId> - <version>${flink.version}</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.apache.flink</groupId> - <artifactId>flink-avro</artifactId> - <version>${flink.version}</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.apache.flink</groupId> - <artifactId>flink-avro-confluent-registry</artifactId> - <version>${flink.version}</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.apache.flink</groupId> - <artifactId>flink-csv</artifactId> - <version>${flink.version}</version> - <scope>test</scope> - </dependency> + <dependency> + <groupId>org.assertj</groupId> + <artifactId>assertj-core</artifactId> + <scope>test</scope> + </dependency> + + <dependency> + <groupId>org.hamcrest</groupId> + <artifactId>hamcrest-all</artifactId> + <scope>test</scope> + </dependency> + + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-core</artifactId> + <scope>test</scope> + <type>test-jar</type> + </dependency> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-test-utils-junit</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-clients</artifactId> + <scope>test</scope> + </dependency> + + <dependency> + <groupId>org.testcontainers</groupId> + <artifactId>kafka</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>com.github.docker-java</groupId> + <artifactId>docker-java-api</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.testcontainers</groupId> + <artifactId>junit-jupiter</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.testcontainers</groupId> + <artifactId>testcontainers</artifactId> + <scope>test</scope> + </dependency> + + <dependency> + <groupId>org.junit.jupiter</groupId> + <artifactId>junit-jupiter-api</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.junit.jupiter</groupId> + <artifactId>junit-jupiter-params</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <scope>test</scope> + </dependency> + + <dependency> + <groupId>org.yaml</groupId> + <artifactId>snakeyaml</artifactId> + <version>2.2</version> + <scope>test</scope> + </dependency> + + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-test-utils</artifactId> + <scope>test</scope> + </dependency> + + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-connector-test-utils</artifactId> + <scope>test</scope> + </dependency> + + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-runtime</artifactId> + <type>test-jar</type> + <scope>test</scope> + </dependency> + + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-table-planner_${scala.binary.version}</artifactId> + <scope>test</scope> + </dependency> + + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-connector-base</artifactId> + <scope>test</scope> + <type>test-jar</type> + </dependency> + + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-metrics-jmx</artifactId> + <scope>test</scope> + </dependency> + + <!-- Kafka table factory testing --> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-table-common</artifactId> + <type>test-jar</type> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-table-runtime</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-table-planner_${scala.binary.version}</artifactId> + <type>test-jar</type> + <scope>test</scope> + </dependency> + + <!-- Kafka SQL IT test with formats --> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-json</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-avro</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.avro</groupId> + <artifactId>avro</artifactId> + <scope>test</scope> + </dependency> <dependency> <groupId>org.apache.flink</groupId> - <artifactId>flink-statebackend-forst</artifactId> - <version>${flink.version}</version> - <scope>test</scope> - </dependency> - - <!-- ArchUnit test dependencies --> - - <dependency> - <groupId>org.apache.flink</groupId> - <artifactId>flink-architecture-tests-test</artifactId> - <scope>test</scope> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-jar-plugin</artifactId> - <executions> - <execution> - <goals> - <goal>test-jar</goal> - </goals> - <configuration> - <includes> - <include>**/KafkaTestEnvironment*</include> - <include>**/testutils/*</include> - <include>META-INF/LICENSE</include> - <include>META-INF/NOTICE</include> - </includes> - </configuration> - </execution> - </executions> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-source-plugin</artifactId> - <executions> - <execution> - <id>attach-test-sources</id> - <goals> - <goal>test-jar-no-fork</goal> - </goals> - <configuration> - <archive> - <!-- Globally exclude maven metadata, because it may accidentally bundle files we don't intend to --> - <addMavenDescriptor>false</addMavenDescriptor> - </archive> - <includes> - <include>**/KafkaTestEnvironment*</include> - <include>**/testutils/*</include> - <include>META-INF/LICENSE</include> - <include>META-INF/NOTICE</include> - </includes> - </configuration> - </execution> - </executions> - </plugin> - </plugins> - </build> + <artifactId>flink-avro-confluent-registry</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-csv</artifactId> + <scope>test</scope> + </dependency> + + <!-- ArchUnit test dependencies --> + <dependency> + <groupId>com.tngtech.archunit</groupId> + <artifactId>archunit</artifactId> + <scope>test</scope> + </dependency> + + <dependency> + <groupId>com.tngtech.archunit</groupId> + <artifactId>archunit-junit5-api</artifactId> + <scope>test</scope> + </dependency> + + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-architecture-tests-base</artifactId> + <scope>test</scope> + </dependency> + + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-architecture-tests-test</artifactId> + <scope>test</scope> + </dependency> + + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-architecture-tests-production</artifactId> + <scope>test</scope> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-jar-plugin</artifactId> + <executions> + <execution> + <goals> + <goal>test-jar</goal> + </goals> + <configuration> + <includes> + <include>**/KafkaTestEnvironment*</include> + <include>**/testutils/*</include> + <include>META-INF/LICENSE</include> + <include>META-INF/NOTICE</include> + </includes> + </configuration> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-source-plugin</artifactId> + <executions> + <execution> + <id>attach-test-sources</id> + <goals> + <goal>test-jar-no-fork</goal> + </goals> + <configuration> + <archive> + <!-- Globally exclude maven metadata, because it may accidentally bundle files we don't intend to --> + <addMavenDescriptor>false</addMavenDescriptor> + </archive> + <includes> + <include>**/KafkaTestEnvironment*</include> + <include>**/testutils/*</include> + <include>META-INF/LICENSE</include> + <include>META-INF/NOTICE</include> + </includes> + </configuration> + </execution> + </executions> + </plugin> + + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-dependency-plugin</artifactId> + <executions> + <execution> + <id>analyze-deps</id> + <goals> + <goal>analyze</goal> + </goals> + <phase>verify</phase> + <configuration> + <ignoredUnusedDeclaredDependencies>org.apache.flink:flink-csv,org.apache.flink:flink-table-planner_${scala.binary.version} + </ignoredUnusedDeclaredDependencies> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> </project> diff --git a/flink-python/pom.xml b/flink-python/pom.xml index d15b0b60..9f6b93a3 100644 --- a/flink-python/pom.xml +++ b/flink-python/pom.xml @@ -42,26 +42,27 @@ under the License. <groupId>org.apache.flink</groupId> <artifactId>flink-sql-connector-kafka</artifactId> <version>${project.version}</version> + <scope>test</scope> </dependency> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-runtime</artifactId> - <version>${flink.version}</version> + <scope>test</scope> </dependency> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-streaming-java</artifactId> - <version>${flink.version}</version> + <scope>test</scope> </dependency> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-connector-test-utils</artifactId> - <version>${flink.version}</version> + <scope>test</scope> </dependency> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-sql-avro</artifactId> - <version>${flink.version}</version> + <scope>test</scope> </dependency> </dependencies> diff --git a/flink-sql-connector-kafka/pom.xml b/flink-sql-connector-kafka/pom.xml index 67030c54..f7c40e61 100644 --- a/flink-sql-connector-kafka/pom.xml +++ b/flink-sql-connector-kafka/pom.xml @@ -44,12 +44,23 @@ under the License. <artifactId>flink-connector-kafka</artifactId> <version>${project.version}</version> </dependency> + <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-test-utils</artifactId> <version>${flink.version}</version> <scope>test</scope> </dependency> + <dependency> + <groupId>org.junit.jupiter</groupId> + <artifactId>junit-jupiter-api</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-table-common</artifactId> + <scope>test</scope> + </dependency> </dependencies> <build> @@ -95,6 +106,23 @@ under the License. </execution> </executions> </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-dependency-plugin</artifactId> + <executions> + <execution> + <id>analyze-deps</id> + <goals> + <goal>analyze</goal> + </goals> + <phase>verify</phase> + <configuration> + <ignoredUnusedDeclaredDependencies>org.apache.flink:flink-connector-kafka + </ignoredUnusedDeclaredDependencies> + </configuration> + </execution> + </executions> + </plugin> </plugins> </build> </project> diff --git a/pom.xml b/pom.xml index 652c197f..b9cf0f68 100644 --- a/pom.xml +++ b/pom.xml @@ -16,495 +16,620 @@ 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"> - - <parent> - <groupId>org.apache.flink</groupId> - <artifactId>flink-connector-parent</artifactId> - <version>1.0.0</version> - </parent> - - <modelVersion>4.0.0</modelVersion> - - <artifactId>flink-connector-kafka-parent</artifactId> - <version>4.0.0</version> - <name>Flink : Connectors : Kafka : Parent</name> - <packaging>pom</packaging> - <inceptionYear>2022</inceptionYear> - - <scm> - <url>https://github.com/apache/flink-connector-kafka</url> - <connection>g...@github.com:apache/flink-connector-kafka.git</connection> - <developerConnection> - scm:git:https://gitbox.apache.org/repos/asf/flink-connector-kafka.git - </developerConnection> - </scm> - - <modules> - <module>flink-connector-kafka</module> - <module>flink-sql-connector-kafka</module> - <module>flink-connector-kafka-e2e-tests</module> - <module>flink-python</module> - </modules> - - <properties> - <flink.version>2.0.0</flink.version> - <kafka.version>3.9.0</kafka.version> - <confluent.version>7.8.2</confluent.version> - - <jackson-bom.version>2.16.2</jackson-bom.version> - <junit4.version>4.13.2</junit4.version> - <junit5.version>5.9.1</junit5.version> - <assertj.version>3.23.1</assertj.version> - <testcontainers.version>1.17.2</testcontainers.version> - <mockito.version>3.4.6</mockito.version> - <powermock.version>2.0.9</powermock.version> - <hamcrest.version>1.3</hamcrest.version> - <byte-buddy.version>1.12.10</byte-buddy.version> - <commons-cli.version>1.5.0</commons-cli.version> - <scala.binary.version>2.12</scala.binary.version> - <scala-reflect.version>2.12.19</scala-reflect.version> - <scala-library.version>2.12.19</scala-library.version> - <snappy-java.version>1.1.10.5</snappy-java.version> - <avro.version>1.11.4</avro.version> - <guava.version>32.1.2-jre</guava.version> - - <japicmp.skip>false</japicmp.skip> - <japicmp.referenceVersion>1.17.0</japicmp.referenceVersion> - - <slf4j.version>1.7.36</slf4j.version> - <log4j.version>2.17.1</log4j.version> - - <flink.parent.artifactId>flink-connector-kafka-parent</flink.parent.artifactId> - - <!-- This property should contain the add-opens/add-exports commands required for the tests - in the given connector's module to pass. - It MUST be a space-separated list not containing any newlines, - of entries in the form '[-]{2}add-[opens|exports]=<module>/<package>=ALL-UNNAMED'.--> - <flink.connector.module.config/> - <flink.surefire.baseArgLine>-XX:+UseG1GC -Xms256m -XX:+IgnoreUnrecognizedVMOptions ${flink.connector.module.config}</flink.surefire.baseArgLine> - </properties> - - <dependencies> - <!-- Root dependencies for all projects --> - <dependency> - <groupId>com.fasterxml.jackson.core</groupId> - <artifactId>jackson-core</artifactId> - </dependency> - <dependency> - <groupId>com.fasterxml.jackson.core</groupId> - <artifactId>jackson-databind</artifactId> - </dependency> - <dependency> - <!-- Java 8 Date/time --> - <groupId>com.fasterxml.jackson.datatype</groupId> - <artifactId>jackson-datatype-jsr310</artifactId> - </dependency> - <dependency> - <!-- Java 8 Datatypes --> - <groupId>com.fasterxml.jackson.datatype</groupId> - <artifactId>jackson-datatype-jdk8</artifactId> - </dependency> - - <!-- Logging API --> - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-api</artifactId> - <scope>provided</scope> - </dependency> - - <!-- 'javax.annotation' classes like '@Nullable' --> - <dependency> - <groupId>com.google.code.findbugs</groupId> - <artifactId>jsr305</artifactId> - <scope>provided</scope> - </dependency> - - <!-- Test dependencies --> - <dependency> - <groupId>org.junit.jupiter</groupId> - <artifactId>junit-jupiter</artifactId> - <scope>test</scope> - </dependency> - - <dependency> - <groupId>org.junit.vintage</groupId> - <artifactId>junit-vintage-engine</artifactId> - <scope>test</scope> - </dependency> - - <dependency> - <groupId>org.mockito</groupId> - <artifactId>mockito-core</artifactId> - <version>${mockito.version}</version> - <type>jar</type> - <scope>test</scope> - </dependency> - - <dependency> - <groupId>org.testcontainers</groupId> - <artifactId>junit-jupiter</artifactId> - <scope>test</scope> - </dependency> - - <!-- Tests will have log4j as the default logging framework available --> - - <dependency> - <groupId>org.apache.logging.log4j</groupId> - <artifactId>log4j-slf4j-impl</artifactId> - <scope>test</scope> - </dependency> - - <dependency> - <groupId>org.apache.logging.log4j</groupId> - <artifactId>log4j-api</artifactId> - <scope>test</scope> - </dependency> - - <dependency> - <groupId>org.apache.logging.log4j</groupId> - <artifactId>log4j-core</artifactId> - <scope>test</scope> - </dependency> - - <dependency> - <groupId>org.apache.flink</groupId> - <artifactId>flink-test-utils-junit</artifactId> - <scope>test</scope> - </dependency> - - <!-- ArchUit test dependencies --> - <dependency> - <groupId>org.apache.flink</groupId> - <artifactId>flink-architecture-tests-test</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.apache.flink</groupId> - <artifactId>flink-architecture-tests-production</artifactId> - <scope>test</scope> - </dependency> - - <dependency> - <groupId>org.apache.flink</groupId> - <artifactId>flink-test-utils-junit</artifactId> - <scope>test</scope> - </dependency> - - </dependencies> - - <!-- This section defines the module versions that are used if nothing else is specified. --> - - <dependencyManagement> - - <dependencies> - <!-- For dependency convergence --> - <dependency> - <groupId>net.bytebuddy</groupId> - <artifactId>byte-buddy</artifactId> - <version>${byte-buddy.version}</version> - </dependency> - - <dependency> - <groupId>net.bytebuddy</groupId> - <artifactId>byte-buddy-agent</artifactId> - <version>${byte-buddy.version}</version> - </dependency> - - <dependency> - <groupId>commons-cli</groupId> - <artifactId>commons-cli</artifactId> - <version>${commons-cli.version}</version> - </dependency> - - <dependency> - <groupId>org.scala-lang</groupId> - <artifactId>scala-reflect</artifactId> - <version>${scala-reflect.version}</version> - </dependency> - - <dependency> - <groupId>org.scala-lang</groupId> - <artifactId>scala-library</artifactId> - <version>${scala-library.version}</version> - </dependency> - - <dependency> - <groupId>org.apache.kafka</groupId> - <artifactId>kafka-clients</artifactId> - <version>${kafka.version}</version> - </dependency> - - <dependency> - <groupId>org.xerial.snappy</groupId> - <artifactId>snappy-java</artifactId> - <version>${snappy-java.version}</version> - </dependency> - - <dependency> - <groupId>org.javassist</groupId> - <artifactId>javassist</artifactId> - <version>3.27.0-GA</version> - </dependency> - - <dependency> - <groupId>org.apache.avro</groupId> - <artifactId>avro</artifactId> - <version>${avro.version}</version> - </dependency> - - <dependency> - <groupId>org.apache.commons</groupId> - <artifactId>commons-lang3</artifactId> - <version>3.3.2</version> - </dependency> + 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"> + + <parent> + <groupId>org.apache.flink</groupId> + <artifactId>flink-connector-parent</artifactId> + <version>1.0.0</version> + </parent> + + <modelVersion>4.0.0</modelVersion> + + <artifactId>flink-connector-kafka-parent</artifactId> + <version>4.0.0</version> + <name>Flink : Connectors : Kafka : Parent</name> + <packaging>pom</packaging> + <inceptionYear>2022</inceptionYear> + + <scm> + <url>https://github.com/apache/flink-connector-kafka</url> + <connection>g...@github.com:apache/flink-connector-kafka.git</connection> + <developerConnection> + scm:git:https://gitbox.apache.org/repos/asf/flink-connector-kafka.git + </developerConnection> + </scm> + + <modules> + <module>flink-connector-kafka</module> + <module>flink-sql-connector-kafka</module> + <module>flink-connector-kafka-e2e-tests</module> + <module>flink-python</module> + </modules> + + <properties> + <flink.version>2.0.0</flink.version> + <kafka.version>3.9.0</kafka.version> + <confluent.version>7.8.2</confluent.version> + + <jackson-bom.version>2.16.2</jackson-bom.version> + <junit4.version>4.13.2</junit4.version> + <junit5.version>5.9.1</junit5.version> + <assertj.version>3.23.1</assertj.version> + <testcontainers.version>1.17.2</testcontainers.version> + <mockito.version>3.4.6</mockito.version> + <powermock.version>2.0.9</powermock.version> + <hamcrest.version>1.3</hamcrest.version> + <byte-buddy.version>1.12.10</byte-buddy.version> + <commons-cli.version>1.5.0</commons-cli.version> + <scala.binary.version>2.12</scala.binary.version> + <scala-reflect.version>2.12.19</scala-reflect.version> + <scala-library.version>2.12.19</scala-library.version> + <snappy-java.version>1.1.10.5</snappy-java.version> + <avro.version>1.11.4</avro.version> + <guava.version>32.1.2-jre</guava.version> + + <japicmp.skip>false</japicmp.skip> + <japicmp.referenceVersion>1.17.0</japicmp.referenceVersion> + + <slf4j.version>1.7.36</slf4j.version> + <log4j.version>2.17.1</log4j.version> + + <flink.parent.artifactId>flink-connector-kafka-parent</flink.parent.artifactId> + + <!-- This property should contain the add-opens/add-exports commands required for the tests + in the given connector's module to pass. + It MUST be a space-separated list not containing any newlines, + of entries in the form '[-]{2}add-[opens|exports]=<module>/<package>=ALL-UNNAMED'.--> + <flink.connector.module.config/> + <flink.surefire.baseArgLine>-XX:+UseG1GC -Xms256m -XX:+IgnoreUnrecognizedVMOptions + ${flink.connector.module.config} + </flink.surefire.baseArgLine> + </properties> + + <!-- This section defines the module versions that are used if nothing else is specified. --> + + <dependencyManagement> + + <dependencies> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-streaming-java</artifactId> + <version>${flink.version}</version> + </dependency> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-annotations</artifactId> + <version>${flink.version}</version> + </dependency> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-connector-datagen</artifactId> + <version>${flink.version}</version> + </dependency> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-core</artifactId> + <version>${flink.version}</version> + </dependency> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-core-api</artifactId> + <version>${flink.version}</version> + </dependency> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-metrics-core</artifactId> + <version>${flink.version}</version> + </dependency> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-runtime</artifactId> + <version>${flink.version}</version> + </dependency> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-clients</artifactId> + <version>${flink.version}</version> + </dependency> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-connector-base</artifactId> + <version>${flink.version}</version> + </dependency> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-table-api-java-bridge</artifactId> + <version>${flink.version}</version> + </dependency> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-table-api-java</artifactId> + <version>${flink.version}</version> + </dependency> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-table-common</artifactId> + <version>${flink.version}</version> + </dependency> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-table-runtime</artifactId> + <version>${flink.version}</version> + </dependency> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-core</artifactId> + <version>${flink.version}</version> + <type>test-jar</type> + </dependency> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-streaming-java</artifactId> + <version>${flink.version}</version> + <type>test-jar</type> + </dependency> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-connector-base</artifactId> + <version>${flink.version}</version> + <type>test-jar</type> + </dependency> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-connector-test-utils</artifactId> + <version>${flink.version}</version> + </dependency> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-runtime</artifactId> + <version>${flink.version}</version> + <type>test-jar</type> + </dependency> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-metrics-jmx</artifactId> + <version>${flink.version}</version> + </dependency> + + <!-- Kafka table factory testing --> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-table-common</artifactId> + <version>${flink.version}</version> + <type>test-jar</type> + </dependency> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-table-test-utils</artifactId> + <version>${flink.version}</version> + </dependency> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-table-api-scala-bridge_${scala.binary.version}</artifactId> + <version>${flink.version}</version> + </dependency> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-table-planner_${scala.binary.version}</artifactId> + <version>${flink.version}</version> + </dependency> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-table-planner_${scala.binary.version}</artifactId> + <version>${flink.version}</version> + <type>test-jar</type> + </dependency> + + <!-- Kafka SQL IT test with formats --> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-json</artifactId> + <version>${flink.version}</version> + </dependency> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-avro</artifactId> + <version>${flink.version}</version> + </dependency> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-avro-confluent-registry</artifactId> + <version>${flink.version}</version> + </dependency> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-csv</artifactId> + <version>${flink.version}</version> + </dependency> + + <!-- For dependency convergence --> + <dependency> + <groupId>net.bytebuddy</groupId> + <artifactId>byte-buddy</artifactId> + <version>${byte-buddy.version}</version> + </dependency> + + <dependency> + <groupId>net.bytebuddy</groupId> + <artifactId>byte-buddy-agent</artifactId> + <version>${byte-buddy.version}</version> + </dependency> + + <dependency> + <groupId>commons-cli</groupId> + <artifactId>commons-cli</artifactId> + <version>${commons-cli.version}</version> + </dependency> + + <dependency> + <groupId>org.scala-lang</groupId> + <artifactId>scala-reflect</artifactId> + <version>${scala-reflect.version}</version> + </dependency> + + <dependency> + <groupId>org.scala-lang</groupId> + <artifactId>scala-library</artifactId> + <version>${scala-library.version}</version> + </dependency> + + <dependency> + <groupId>org.apache.kafka</groupId> + <artifactId>kafka-clients</artifactId> + <version>${kafka.version}</version> + </dependency> + + <dependency> + <groupId>org.xerial.snappy</groupId> + <artifactId>snappy-java</artifactId> + <version>${snappy-java.version}</version> + </dependency> + + <dependency> + <groupId>org.javassist</groupId> + <artifactId>javassist</artifactId> + <version>3.27.0-GA</version> + </dependency> + + <dependency> + <groupId>org.apache.avro</groupId> + <artifactId>avro</artifactId> + <version>${avro.version}</version> + </dependency> + + <dependency> + <groupId>org.apache.commons</groupId> + <artifactId>commons-lang3</artifactId> + <version>3.3.2</version> + </dependency> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>${guava.version}</version> <!-- Don't use guava in production code--> - <scope>test</scope> - </dependency> - - <!-- Flink dependencies --> - <dependency> - <groupId>org.apache.flink</groupId> - <artifactId>flink-test-utils</artifactId> - <version>${flink.version}</version> - <scope>test</scope> - <exclusions> - <exclusion> - <groupId>log4j</groupId> - <artifactId>log4j</artifactId> - </exclusion> - <exclusion> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-log4j12</artifactId> - </exclusion> - </exclusions> - </dependency> - - <dependency> - <groupId>org.apache.flink</groupId> - <artifactId>flink-test-utils-junit</artifactId> - <version>${flink.version}</version> - <scope>test</scope> - </dependency> - - <!-- Flink ArchUnit --> - - <dependency> - <groupId>org.apache.flink</groupId> - <artifactId>flink-architecture-tests-base</artifactId> - <version>${flink.version}</version> - <scope>test</scope> - </dependency> - - <dependency> - <groupId>org.apache.flink</groupId> - <artifactId>flink-architecture-tests-test</artifactId> - <version>${flink.version}</version> - <scope>test</scope> - </dependency> - - <dependency> - <groupId>org.apache.flink</groupId> - <artifactId>flink-architecture-tests-production</artifactId> - <version>${flink.version}</version> - <scope>test</scope> - </dependency> - - <!-- This manages the 'javax.annotation' annotations (JSR305) --> - <dependency> - <groupId>com.google.code.findbugs</groupId> - <artifactId>jsr305</artifactId> - <version>1.3.9</version> - </dependency> - - <dependency> - <groupId>commons-codec</groupId> - <artifactId>commons-codec</artifactId> - <version>1.15</version> - </dependency> - - <dependency> - <groupId>org.apache.httpcomponents</groupId> - <artifactId>httpcore</artifactId> - <version>4.4.14</version> - </dependency> - - <dependency> - <groupId>org.apache.httpcomponents</groupId> - <artifactId>httpclient</artifactId> - <version>4.5.13</version> - </dependency> - - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-api</artifactId> - <version>${slf4j.version}</version> - </dependency> - - <dependency> - <groupId>org.apache.logging.log4j</groupId> - <artifactId>log4j-slf4j-impl</artifactId> - <version>${log4j.version}</version> - </dependency> - - <dependency> - <groupId>org.apache.logging.log4j</groupId> - <artifactId>log4j-api</artifactId> - <version>${log4j.version}</version> - </dependency> - - <dependency> - <groupId>org.apache.logging.log4j</groupId> - <artifactId>log4j-core</artifactId> - <version>${log4j.version}</version> - </dependency> - - <!-- For dependency convergence --> - <dependency> - <groupId>com.fasterxml.jackson</groupId> - <artifactId>jackson-bom</artifactId> - <type>pom</type> - <scope>import</scope> - <version>${jackson-bom.version}</version> - </dependency> - - <!-- For dependency convergence --> - <dependency> - <groupId>org.junit</groupId> - <artifactId>junit-bom</artifactId> - <version>${junit5.version}</version> - <type>pom</type> - <scope>import</scope> - </dependency> - - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <version>${junit4.version}</version> - </dependency> - - <dependency> - <groupId>org.assertj</groupId> - <artifactId>assertj-core</artifactId> - <version>${assertj.version}</version> - <scope>test</scope> - </dependency> - - <!-- For dependency convergence --> - <dependency> - <groupId>com.esotericsoftware.kryo</groupId> - <artifactId>kryo</artifactId> - <version>2.24.0</version> - </dependency> - - <!-- For dependency convergence --> - <dependency> - <groupId>org.objenesis</groupId> - <artifactId>objenesis</artifactId> - <version>2.1</version> - </dependency> - - <!-- For dependency convergence --> - <dependency> - <groupId>org.yaml</groupId> - <artifactId>snakeyaml</artifactId> - <version>2.2</version> - </dependency> - - <!-- For dependency convergence --> - <dependency> - <groupId>org.apache.commons</groupId> - <artifactId>commons-compress</artifactId> - <version>1.26.1</version> - </dependency> - - <!-- For dependency convergence --> - <dependency> - <groupId>commons-io</groupId> - <artifactId>commons-io</artifactId> - <version>2.15.1</version> - </dependency> - - <dependency> - <groupId>org.testcontainers</groupId> - <artifactId>testcontainers-bom</artifactId> - <version>${testcontainers.version}</version> - <type>pom</type> - <scope>import</scope> - </dependency> - - </dependencies> - </dependencyManagement> - - <build> - <plugins> - <plugin> - <groupId>org.codehaus.mojo</groupId> - <artifactId>exec-maven-plugin</artifactId> - <inherited>false</inherited> - <dependencies> - <dependency> - <groupId>org.apache.flink</groupId> - <artifactId>flink-ci-tools</artifactId> - <version>${flink.version}</version> - </dependency> - </dependencies> - </plugin> - - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-jar-plugin</artifactId> - </plugin> - - <plugin> - <!-- activate API compatibility checks --> - <groupId>io.github.zentol.japicmp</groupId> - <artifactId>japicmp-maven-plugin</artifactId> - </plugin> - - <plugin> - <groupId>org.apache.rat</groupId> - <artifactId>apache-rat-plugin</artifactId> - <inherited>false</inherited> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-checkstyle-plugin</artifactId> - </plugin> - <plugin> - <groupId>com.diffplug.spotless</groupId> - <artifactId>spotless-maven-plugin</artifactId> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-compiler-plugin</artifactId> - </plugin> - - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-surefire-plugin</artifactId> - </plugin> - - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-enforcer-plugin</artifactId> - </plugin> - - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-shade-plugin</artifactId> - </plugin> - - <plugin> - <groupId>org.commonjava.maven.plugins</groupId> - <artifactId>directory-maven-plugin</artifactId> - </plugin> - </plugins> - </build> + </dependency> + + <!-- Flink dependencies --> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-test-utils</artifactId> + <version>${flink.version}</version> + <exclusions> + <exclusion> + <groupId>log4j</groupId> + <artifactId>log4j</artifactId> + </exclusion> + <exclusion> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-log4j12</artifactId> + </exclusion> + </exclusions> + </dependency> + + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-test-utils-junit</artifactId> + <version>${flink.version}</version> + </dependency> + + <!-- Flink ArchUnit --> + + <dependency> + <groupId>com.tngtech.archunit</groupId> + <artifactId>archunit</artifactId> + <version>1.2.0</version> + </dependency> + <dependency> + <groupId>com.tngtech.archunit</groupId> + <artifactId>archunit-junit5-api</artifactId> + <version>1.2.0</version> + </dependency> + + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-architecture-tests-base</artifactId> + <version>${flink.version}</version> + </dependency> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-architecture-tests-test</artifactId> + <version>${flink.version}</version> + </dependency> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-architecture-tests-production</artifactId> + <version>${flink.version}</version> + </dependency> + + <!-- This manages the 'javax.annotation' annotations (JSR305) --> + <dependency> + <groupId>com.google.code.findbugs</groupId> + <artifactId>jsr305</artifactId> + <version>1.3.9</version> + </dependency> + + <dependency> + <groupId>commons-codec</groupId> + <artifactId>commons-codec</artifactId> + <version>1.15</version> + </dependency> + + <dependency> + <groupId>org.apache.httpcomponents</groupId> + <artifactId>httpcore</artifactId> + <version>4.4.14</version> + </dependency> + + <dependency> + <groupId>org.apache.httpcomponents</groupId> + <artifactId>httpclient</artifactId> + <version>4.5.13</version> + </dependency> + + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + <version>${slf4j.version}</version> + </dependency> + + <dependency> + <groupId>org.apache.logging.log4j</groupId> + <artifactId>log4j-slf4j-impl</artifactId> + <version>${log4j.version}</version> + </dependency> + + <dependency> + <groupId>org.apache.logging.log4j</groupId> + <artifactId>log4j-api</artifactId> + <version>${log4j.version}</version> + </dependency> + + <dependency> + <groupId>org.apache.logging.log4j</groupId> + <artifactId>log4j-core</artifactId> + <version>${log4j.version}</version> + </dependency> + + <!-- For dependency convergence --> + <dependency> + <groupId>com.fasterxml.jackson</groupId> + <artifactId>jackson-bom</artifactId> + <type>pom</type> + <scope>import</scope> + <version>${jackson-bom.version}</version> + </dependency> + + <!-- For dependency convergence --> + <dependency> + <groupId>org.junit</groupId> + <artifactId>junit-bom</artifactId> + <version>${junit5.version}</version> + <type>pom</type> + <scope>import</scope> + </dependency> + + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>${junit4.version}</version> + </dependency> + + <dependency> + <groupId>org.assertj</groupId> + <artifactId>assertj-core</artifactId> + <version>${assertj.version}</version> + </dependency> + <dependency> + <groupId>org.hamcrest</groupId> + <artifactId>hamcrest-all</artifactId> + <version>${hamcrest.version}</version> + </dependency> + <dependency> + <groupId>org.hamcrest</groupId> + <artifactId>hamcrest-core</artifactId> + <version>${hamcrest.version}</version> + </dependency> + + <!-- For dependency convergence --> + <dependency> + <groupId>com.esotericsoftware.kryo</groupId> + <artifactId>kryo</artifactId> + <version>2.24.0</version> + </dependency> + + <!-- For dependency convergence --> + <dependency> + <groupId>org.objenesis</groupId> + <artifactId>objenesis</artifactId> + <version>2.1</version> + </dependency> + + <!-- For dependency convergence --> + <dependency> + <groupId>org.yaml</groupId> + <artifactId>snakeyaml</artifactId> + <version>2.2</version> + </dependency> + + <!-- For dependency convergence --> + <dependency> + <groupId>org.apache.commons</groupId> + <artifactId>commons-compress</artifactId> + <version>1.26.1</version> + </dependency> + + <!-- For dependency convergence --> + <dependency> + <groupId>commons-io</groupId> + <artifactId>commons-io</artifactId> + <version>2.15.1</version> + </dependency> + + <dependency> + <groupId>org.testcontainers</groupId> + <artifactId>testcontainers-bom</artifactId> + <version>${testcontainers.version}</version> + <type>pom</type> + <scope>import</scope> + </dependency> + + <dependency> + <groupId>com.github.docker-java</groupId> + <artifactId>docker-java-api</artifactId> + <version>3.2.13</version> + </dependency> + + <dependency> + <groupId>io.confluent</groupId> + <artifactId>kafka-avro-serializer</artifactId> + <version>${confluent.version}</version> + </dependency> + <dependency> + <groupId>io.confluent</groupId> + <artifactId>kafka-schema-registry-client</artifactId> + <version>${confluent.version}</version> + </dependency> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-sql-avro-confluent-registry</artifactId> + <version>${flink.version}</version> + </dependency> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-sql-avro</artifactId> + <version>${flink.version}</version> + </dependency> + </dependencies> + </dependencyManagement> + + <build> + <plugins> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>exec-maven-plugin</artifactId> + <inherited>false</inherited> + <dependencies> + <dependency> + <groupId>org.apache.flink</groupId> + <artifactId>flink-ci-tools</artifactId> + <version>${flink.version}</version> + </dependency> + </dependencies> + </plugin> + + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-jar-plugin</artifactId> + </plugin> + + <plugin> + <!-- activate API compatibility checks --> + <groupId>io.github.zentol.japicmp</groupId> + <artifactId>japicmp-maven-plugin</artifactId> + </plugin> + + <plugin> + <groupId>org.apache.rat</groupId> + <artifactId>apache-rat-plugin</artifactId> + <inherited>false</inherited> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-checkstyle-plugin</artifactId> + </plugin> + <plugin> + <groupId>com.diffplug.spotless</groupId> + <artifactId>spotless-maven-plugin</artifactId> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + </plugin> + + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + </plugin> + + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-shade-plugin</artifactId> + </plugin> + + <plugin> + <groupId>org.commonjava.maven.plugins</groupId> + <artifactId>directory-maven-plugin</artifactId> + </plugin> + + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-dependency-plugin</artifactId> + <version>3.7.1</version> + <executions> + <execution> + <id>analyze-deps</id> + <goals> + <goal>analyze</goal> + </goals> + <phase>verify</phase> + <configuration> + <failOnWarning>true</failOnWarning> + <ignoreAllNonTestScoped>true</ignoreAllNonTestScoped> + </configuration> + </execution> + </executions> + </plugin> + + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-enforcer-plugin</artifactId> + <executions> + <execution> + <id>enforce-banned-deps</id> + <goals> + <goal>enforce</goal> + </goals> + <configuration> + <rules> + <bannedDependencies> + <excludes> + <exclude>com.google.guava:guava</exclude> + <exclude>org.mockito</exclude> + <exclude>org.powermock</exclude> + </excludes> + <includes> + <include>com.google.guava:guava:*:*:test</include> + </includes> + </bannedDependencies> + </rules> + <fail>true</fail> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> </project> diff --git a/tools/maven/checkstyle.xml b/tools/maven/checkstyle.xml index 7d1f9fd7..157888a5 100644 --- a/tools/maven/checkstyle.xml +++ b/tools/maven/checkstyle.xml @@ -210,7 +210,7 @@ This file is based on the checkstyle file of Apache Beam. <module name="IllegalImport"> <property name="illegalPkgs" - value="autovalue.shaded, avro.shaded, com.google.api.client.repackaged, com.google.appengine.repackaged"/> + value="autovalue.shaded, avro.shaded, com.google.api.client.repackaged, com.google"/> </module> <module name="IllegalImport"> <property name="illegalPkgs" value="org.codehaus.jackson"/> @@ -224,6 +224,10 @@ This file is based on the checkstyle file of Apache Beam. <property name="illegalPkgs" value="io.netty"/> <message key="import.illegal" value="{0}; Use flink-shaded-netty instead."/> </module> + <module name="IllegalImport"> + <property name="illegalPkgs" value="com.google"/> + <message key="import.illegal" value="{0}; Don't use guava in prod code."/> + </module> <module name="RedundantModifier"> <!-- Checks for redundant modifiers on various symbol definitions. diff --git a/tools/maven/suppressions.xml b/tools/maven/suppressions.xml index 4f80ec22..7fb3482d 100644 --- a/tools/maven/suppressions.xml +++ b/tools/maven/suppressions.xml @@ -23,4 +23,7 @@ under the License. "http://www.puppycrawl.com/dtds/suppressions_1_1.dtd"> <suppressions> + <suppress + files="(.*)test[/\\]" + checks="IllegalImport"/> </suppressions>