Skip to content

Commit 2bc999b

Browse files
committed
[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
1 parent e874476 commit 2bc999b

File tree

9 files changed

+1152
-836
lines changed

9 files changed

+1152
-836
lines changed

flink-connector-kafka-e2e-tests/flink-end-to-end-tests-common-kafka/pom.xml

Lines changed: 72 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -43,15 +43,29 @@ under the License.
4343
<artifactId>flink-connector-kafka</artifactId>
4444
<version>${project.version}</version>
4545
</dependency>
46+
<dependency>
47+
<groupId>org.slf4j</groupId>
48+
<artifactId>slf4j-api</artifactId>
49+
</dependency>
50+
<dependency>
51+
<groupId>org.apache.flink</groupId>
52+
<artifactId>flink-core</artifactId>
53+
</dependency>
54+
<dependency>
55+
<groupId>org.apache.kafka</groupId>
56+
<artifactId>kafka-clients</artifactId>
57+
</dependency>
58+
<dependency>
59+
<groupId>org.testcontainers</groupId>
60+
<artifactId>testcontainers</artifactId>
61+
</dependency>
62+
<dependency>
63+
<groupId>junit</groupId>
64+
<artifactId>junit</artifactId>
65+
</dependency>
4666
<dependency>
4767
<groupId>org.apache.flink</groupId>
4868
<artifactId>flink-test-utils-junit</artifactId>
49-
<scope>compile</scope>
50-
</dependency>
51-
<dependency>
52-
<groupId>org.junit.jupiter</groupId>
53-
<artifactId>junit-jupiter</artifactId>
54-
<scope>compile</scope>
5569
</dependency>
5670
<dependency>
5771
<groupId>org.apache.flink</groupId>
@@ -67,18 +81,47 @@ under the License.
6781
</exclusion>
6882
</exclusions>
6983
</dependency>
70-
<dependency>
71-
<groupId>org.apache.flink</groupId>
72-
<artifactId>flink-connector-base</artifactId>
73-
<version>${flink.version}</version>
74-
<scope>test</scope>
75-
</dependency>
76-
77-
<dependency>
78-
<groupId>org.apache.kafka</groupId>
79-
<artifactId>kafka-clients</artifactId>
80-
<version>${kafka.version}</version>
81-
</dependency>
84+
<dependency>
85+
<groupId>org.apache.flink</groupId>
86+
<artifactId>flink-connector-kafka</artifactId>
87+
<version>${project.version}</version>
88+
<type>test-jar</type>
89+
</dependency>
90+
<dependency>
91+
<groupId>org.apache.flink</groupId>
92+
<artifactId>flink-runtime</artifactId>
93+
<scope>test</scope>
94+
</dependency>
95+
<dependency>
96+
<groupId>org.apache.flink</groupId>
97+
<artifactId>flink-connector-base</artifactId>
98+
<scope>test</scope>
99+
</dependency>
100+
<dependency>
101+
<groupId>org.apache.flink</groupId>
102+
<artifactId>flink-test-utils</artifactId>
103+
<scope>test</scope>
104+
</dependency>
105+
<dependency>
106+
<groupId>org.apache.flink</groupId>
107+
<artifactId>flink-core-api</artifactId>
108+
<scope>test</scope>
109+
</dependency>
110+
<dependency>
111+
<groupId>org.hamcrest</groupId>
112+
<artifactId>hamcrest-core</artifactId>
113+
<scope>test</scope>
114+
</dependency>
115+
<dependency>
116+
<groupId>org.assertj</groupId>
117+
<artifactId>assertj-core</artifactId>
118+
<scope>test</scope>
119+
</dependency>
120+
<dependency>
121+
<groupId>org.junit.jupiter</groupId>
122+
<artifactId>junit-jupiter-api</artifactId>
123+
<scope>test</scope>
124+
</dependency>
82125

83126
<!-- The following dependencies are for connector/format sql-jars that
84127
we copy using the maven-dependency-plugin. When extending the test
@@ -90,89 +133,59 @@ under the License.
90133
<!-- Used by maven-dependency-plugin -->
91134
<groupId>org.apache.flink</groupId>
92135
<artifactId>flink-sql-avro</artifactId>
93-
<version>${flink.version}</version>
94136
<scope>test</scope>
95137
</dependency>
96138
<dependency>
97139
<!-- Used by maven-dependency-plugin -->
98140
<groupId>org.apache.flink</groupId>
99141
<artifactId>flink-sql-avro-confluent-registry</artifactId>
100-
<version>${flink.version}</version>
101142
<scope>test</scope>
102143
</dependency>
103144

104-
<dependency>
105-
<groupId>org.testcontainers</groupId>
106-
<artifactId>kafka</artifactId>
107-
</dependency>
145+
<dependency>
146+
<groupId>org.testcontainers</groupId>
147+
<artifactId>kafka</artifactId>
148+
</dependency>
149+
<dependency>
150+
<groupId>org.testcontainers</groupId>
151+
<artifactId>junit-jupiter</artifactId>
152+
</dependency>
108153

109154
<dependency>
110-
<!-- https://mvnrepository.com/artifact/io.confluent/kafka-avro-serializer -->
111155
<groupId>io.confluent</groupId>
112156
<artifactId>kafka-avro-serializer</artifactId>
113-
<version>${confluent.version}</version>
114157
<scope>test</scope>
115-
<exclusions>
116-
<exclusion>
117-
<groupId>com.google.guava</groupId>
118-
<artifactId>guava</artifactId>
119-
</exclusion>
120-
</exclusions>
121158
</dependency>
122159

123160
<dependency>
124161
<groupId>io.confluent</groupId>
125162
<artifactId>kafka-schema-registry-client</artifactId>
126-
<version>${confluent.version}</version>
127163
<scope>test</scope>
128164
<exclusions>
129165
<exclusion>
130166
<groupId>org.apache.kafka</groupId>
131167
<artifactId>kafka-clients</artifactId>
132168
</exclusion>
133-
<exclusion>
134-
<groupId>com.google.guava</groupId>
135-
<artifactId>guava</artifactId>
136-
</exclusion>
137169
</exclusions>
138170
</dependency>
139171

140172
<dependency>
141173
<groupId>org.apache.avro</groupId>
142174
<artifactId>avro</artifactId>
143-
<version>${avro.version}</version>
144175
<scope>test</scope>
145176
</dependency>
146177

147178
<dependency>
148179
<groupId>org.apache.flink</groupId>
149180
<artifactId>flink-connector-test-utils</artifactId>
150-
<version>${flink.version}</version>
151181
<exclusions>
152182
<exclusion>
153183
<groupId>com.google.guava</groupId>
154184
<artifactId>guava</artifactId>
155185
</exclusion>
156186
</exclusions>
187+
<scope>test</scope>
157188
</dependency>
158-
<dependency>
159-
<groupId>org.apache.flink</groupId>
160-
<artifactId>flink-connector-kafka</artifactId>
161-
<version>${project.version}</version>
162-
<type>test-jar</type>
163-
</dependency>
164-
<dependency>
165-
<groupId>org.hamcrest</groupId>
166-
<artifactId>hamcrest-all</artifactId>
167-
<version>${hamcrest.version}</version>
168-
<scope>test</scope>
169-
</dependency>
170-
<!-- Needed by Schema Registry -->
171-
<dependency>
172-
<groupId>com.google.guava</groupId>
173-
<artifactId>guava</artifactId>
174-
<version>${guava.version}</version>
175-
</dependency>
176189
</dependencies>
177190

178191
<build>
@@ -194,23 +207,20 @@ under the License.
194207
<artifactItem>
195208
<groupId>org.apache.flink</groupId>
196209
<artifactId>flink-streaming-kafka-test</artifactId>
197-
<version>${project.version}</version>
198210
<type>jar</type>
199211
<overWrite>true</overWrite>
200212
<outputDirectory>${project.build.directory}/dependencies</outputDirectory>
201213
</artifactItem>
202214
<artifactItem>
203215
<groupId>org.apache.flink</groupId>
204216
<artifactId>flink-sql-avro</artifactId>
205-
<version>${flink.version}</version>
206217
<destFileName>avro.jar</destFileName>
207218
<type>jar</type>
208219
<outputDirectory>${project.build.directory}/dependencies</outputDirectory>
209220
</artifactItem>
210221
<artifactItem>
211222
<groupId>org.apache.flink</groupId>
212223
<artifactId>flink-sql-avro-confluent-registry</artifactId>
213-
<version>${flink.version}</version>
214224
<destFileName>avro-confluent.jar</destFileName>
215225
<type>jar</type>
216226
<outputDirectory>${project.build.directory}/dependencies</outputDirectory>
@@ -226,36 +236,27 @@ under the License.
226236
<artifactItem>
227237
<groupId>org.apache.flink</groupId>
228238
<artifactId>flink-connector-kafka</artifactId>
229-
<version>${project.version}</version>
230239
<destFileName>kafka-connector.jar</destFileName>
231240
<type>jar</type>
232241
<outputDirectory>${project.build.directory}/dependencies</outputDirectory>
233242
</artifactItem>
234243
<artifactItem>
235244
<groupId>org.apache.flink</groupId>
236245
<artifactId>flink-connector-test-utils</artifactId>
237-
<version>${flink.version}</version>
238246
<destFileName>flink-connector-testing.jar</destFileName>
239247
<type>jar</type>
240248
<outputDirectory>${project.build.directory}/dependencies</outputDirectory>
241249
</artifactItem>
242250
<artifactItem>
243251
<groupId>org.apache.kafka</groupId>
244252
<artifactId>kafka-clients</artifactId>
245-
<version>${kafka.version}</version>
246253
<destFileName>kafka-clients.jar</destFileName>
247254
<type>jar</type>
248255
<outputDirectory>${project.build.directory}/dependencies</outputDirectory>
249256
</artifactItem>
250-
<artifactItem>
251-
<groupId>com.google.guava</groupId>
252-
<artifactId>guava</artifactId>
253-
<version>${guava.version}</version>
254-
<destFileName>guava.jar</destFileName>
255-
<type>jar</type>
256-
<outputDirectory>${project.build.directory}/dependencies</outputDirectory>
257-
</artifactItem>
258257
</artifactItems>
258+
<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
259+
</ignoredUnusedDeclaredDependencies>
259260
</configuration>
260261
</plugin>
261262
</plugins>

flink-connector-kafka-e2e-tests/flink-streaming-kafka-test-base/pom.xml

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,16 @@ under the License.
3333
<packaging>jar</packaging>
3434

3535
<dependencies>
36-
<dependency>
37-
<groupId>org.apache.flink</groupId>
38-
<artifactId>flink-streaming-java</artifactId>
39-
<version>${flink.version}</version>
40-
</dependency>
36+
<dependency>
37+
<groupId>org.apache.flink</groupId>
38+
<artifactId>flink-core</artifactId>
39+
<version>${flink.version}</version>
40+
</dependency>
41+
<dependency>
42+
<groupId>org.apache.flink</groupId>
43+
<artifactId>flink-runtime</artifactId>
44+
<version>${flink.version}</version>
45+
</dependency>
4146
</dependencies>
4247

4348
</project>

flink-connector-kafka-e2e-tests/flink-streaming-kafka-test/pom.xml

Lines changed: 40 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,29 @@ under the License.
4343
<version>${project.version}</version>
4444
</dependency>
4545

46-
<dependency>
47-
<groupId>org.apache.flink</groupId>
48-
<artifactId>flink-streaming-java</artifactId>
49-
<version>${flink.version}</version>
50-
</dependency>
46+
<dependency>
47+
<groupId>org.apache.kafka</groupId>
48+
<artifactId>kafka-clients</artifactId>
49+
</dependency>
50+
51+
<dependency>
52+
<groupId>org.apache.flink</groupId>
53+
<artifactId>flink-core</artifactId>
54+
<scope>provided</scope>
55+
</dependency>
56+
57+
<dependency>
58+
<groupId>org.apache.flink</groupId>
59+
<artifactId>flink-connector-base</artifactId>
60+
<scope>provided</scope>
61+
</dependency>
62+
63+
<dependency>
64+
<groupId>org.apache.flink</groupId>
65+
<artifactId>flink-runtime</artifactId>
66+
<scope>provided</scope>
67+
</dependency>
68+
5169
</dependencies>
5270

5371
<build>
@@ -82,6 +100,23 @@ under the License.
82100
</execution>
83101
</executions>
84102
</plugin>
103+
104+
<plugin>
105+
<groupId>org.apache.maven.plugins</groupId>
106+
<artifactId>maven-dependency-plugin</artifactId>
107+
<executions>
108+
<execution>
109+
<id>analyze-deps</id>
110+
<goals>
111+
<goal>analyze</goal>
112+
</goals>
113+
<phase>verify</phase>
114+
<configuration>
115+
<ignoredUnusedDeclaredDependencies>org.apache.flink:flink-connector-base</ignoredUnusedDeclaredDependencies>
116+
</configuration>
117+
</execution>
118+
</executions>
119+
</plugin>
85120
</plugins>
86121
</build>
87122

0 commit comments

Comments
 (0)