Skip to content

Commit c7dfd0d

Browse files
author
Adam Cozzette
authored
Align dependency handling with Bazel best practices (#9165)
This commit removes the use of bind() since that function goes against Bazel best practices: https://docs.bazel.build/versions/main/external.html#repository-rules-1 The bind() function basically maps a dependency into //external, but there is no good reason to do this. By mapping dependencies into //external and relying on this in our own BUILD files, we're forcing projects that depend on us to do the same. The one bind() call that I did leave in place was //:python_headers. This one seems to be doing something complicated I don't fully understand, and I don't want to risk breaking it. This change also moves our list of required Maven artifacts into a constant in protobuf_deps.bzl. This way, projects that depend on us can refer to this list when they invoke maven_install() and automatically pull in all the necesary dependencies. This fixes #9132.
1 parent 67c2a92 commit c7dfd0d

5 files changed

Lines changed: 92 additions & 115 deletions

File tree

WORKSPACE

Lines changed: 8 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ http_archive(
2727
)
2828

2929
# Load common dependencies.
30-
load("//:protobuf_deps.bzl", "protobuf_deps")
30+
load("//:protobuf_deps.bzl", "PROTOBUF_MAVEN_ARTIFACTS", "protobuf_deps")
3131
protobuf_deps()
3232

3333
bind(
@@ -36,70 +36,23 @@ bind(
3636
)
3737

3838
load("@rules_jvm_external//:defs.bzl", "maven_install")
39-
maven_install(
40-
artifacts = [
41-
"com.google.code.findbugs:jsr305:3.0.2",
42-
"com.google.code.gson:gson:2.8.6",
43-
"com.google.errorprone:error_prone_annotations:2.3.2",
44-
"com.google.j2objc:j2objc-annotations:1.3",
45-
"com.google.guava:guava:30.1.1-jre",
46-
"com.google.truth:truth:1.1.2",
47-
"junit:junit:4.12",
48-
"org.easymock:easymock:3.2",
4939

50-
],
40+
maven_install(
41+
artifacts = PROTOBUF_MAVEN_ARTIFACTS,
42+
# For updating instructions, see:
43+
# https://github.com/bazelbuild/rules_jvm_external#updating-maven_installjson
44+
maven_install_json = "//:maven_install.json",
5145
repositories = [
5246
"https://repo1.maven.org/maven2",
5347
"https://repo.maven.apache.org/maven2",
5448
],
55-
# For updating instructions, see:
56-
# https://github.com/bazelbuild/rules_jvm_external#updating-maven_installjson
57-
maven_install_json = "//:maven_install.json",
5849
)
5950

6051
load("@maven//:defs.bzl", "pinned_maven_install")
61-
pinned_maven_install()
62-
63-
bind(
64-
name = "guava",
65-
actual = "@maven//:com_google_guava_guava",
66-
)
67-
68-
bind(
69-
name = "gson",
70-
actual = "@maven//:com_google_code_gson_gson",
71-
)
72-
73-
bind(
74-
name = "error_prone_annotations",
75-
actual = "@maven//:com_google_errorprone_error_prone_annotations",
76-
)
7752

78-
bind(
79-
name = "j2objc_annotations",
80-
actual = "@maven//:com_google_j2objc_j2objc_annotations",
81-
)
82-
83-
bind(
84-
name = "jsr305",
85-
actual = "@maven//:com_google_code_findbugs_jsr305",
86-
)
87-
88-
bind(
89-
name = "junit",
90-
actual = "@maven//:junit_junit",
91-
)
92-
93-
bind(
94-
name = "easymock",
95-
actual = "@maven//:org_easymock_easymock",
96-
)
97-
98-
bind(
99-
name = "truth",
100-
actual = "@maven//:com_google_truth_truth",
101-
)
53+
pinned_maven_install()
10254

10355
# For `cc_proto_blacklist_test` and `build_test`.
10456
load("@bazel_skylib//:workspace.bzl", "bazel_skylib_workspace")
57+
10558
bazel_skylib_workspace()

java/core/BUILD

Lines changed: 43 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
load("@bazel_skylib//rules:build_test.bzl", "build_test")
2-
load("@rules_java//java:defs.bzl", "java_library", "java_proto_library", "java_lite_proto_library")
2+
load("@rules_java//java:defs.bzl", "java_library", "java_lite_proto_library", "java_proto_library")
33
load("@rules_jvm_external//:defs.bzl", "java_export")
44
load("@rules_proto//proto:defs.bzl", "proto_lang_toolchain", "proto_library")
55
load("//:internal.bzl", "conformance_test")
@@ -103,7 +103,7 @@ LITE_SRCS = [
103103
java_library(
104104
name = "lite",
105105
srcs = LITE_SRCS + [
106-
"//:gen_well_known_protos_javalite"
106+
"//:gen_well_known_protos_javalite",
107107
],
108108
visibility = [
109109
"//java/lite:__pkg__",
@@ -115,10 +115,10 @@ java_export(
115115
name = "lite_mvn",
116116
maven_coordinates = "com.google.protobuf:protobuf-javalite:%s" % PROTOBUF_VERSION,
117117
pom_template = "//java/lite:pom_template.xml",
118-
runtime_deps = [":lite"],
119118
resources = [
120119
"//:lite_well_known_protos",
121120
],
121+
runtime_deps = [":lite"],
122122
)
123123

124124
java_library(
@@ -150,25 +150,25 @@ java_export(
150150
name = "core_mvn",
151151
maven_coordinates = "com.google.protobuf:protobuf-java:%s" % PROTOBUF_VERSION,
152152
pom_template = "pom_template.xml",
153-
runtime_deps = [":core"],
154153
resources = [
155154
"//:well_known_protos",
156155
],
156+
runtime_deps = [":core"],
157157
)
158158

159159
filegroup(
160160
name = "release",
161-
visibility = ["//java:__pkg__"],
162161
srcs = [
163-
":core_mvn-pom",
164-
":core_mvn-maven-source",
165162
":core_mvn-docs",
163+
":core_mvn-maven-source",
164+
":core_mvn-pom",
166165
":core_mvn-project",
167-
":lite_mvn-pom",
168-
":lite_mvn-maven-source",
169166
":lite_mvn-docs",
167+
":lite_mvn-maven-source",
168+
":lite_mvn-pom",
170169
":lite_mvn-project",
171-
]
170+
],
171+
visibility = ["//java:__pkg__"],
172172
)
173173

174174
proto_lang_toolchain(
@@ -207,22 +207,22 @@ java_library(
207207
name = "test_util",
208208
srcs = [
209209
"src/test/java/com/google/protobuf/TestUtil.java",
210-
"src/test/java/com/google/protobuf/TestUtilLite.java"
210+
"src/test/java/com/google/protobuf/TestUtilLite.java",
211211
],
212212
deps = [
213213
":core",
214214
":generic_test_protos_java_proto",
215215
":java_test_protos_java_proto",
216-
"//external:guava",
217-
"//external:junit",
216+
"@maven//:com_google_guava_guava",
217+
"@maven//:junit_junit",
218218
],
219219
)
220220

221221
test_suite(
222222
name = "tests",
223223
tests = [
224-
"core_build_test",
225224
"conformance_test",
225+
"core_build_test",
226226
"core_tests",
227227
],
228228
)
@@ -236,29 +236,32 @@ build_test(
236236

237237
conformance_test(
238238
name = "conformance_test",
239-
testee = "//:conformance_java",
240239
failure_list = "//:conformance/failure_list_java.txt",
240+
testee = "//:conformance_java",
241241
text_format_failure_list = "//:conformance/text_format_failure_list_java.txt",
242242
)
243243

244244
junit_tests(
245245
name = "core_tests",
246-
srcs = glob(["src/test/java/**/*.java"], exclude = [
247-
"src/test/java/com/google/protobuf/TestUtil.java",
248-
"src/test/java/com/google/protobuf/TestUtilLite.java",
249-
]),
250-
data = ["//:testdata"],
251246
size = "large",
247+
srcs = glob(
248+
["src/test/java/**/*.java"],
249+
exclude = [
250+
"src/test/java/com/google/protobuf/TestUtil.java",
251+
"src/test/java/com/google/protobuf/TestUtilLite.java",
252+
],
253+
),
254+
data = ["//:testdata"],
252255
deps = [
253256
":core",
254257
":generic_test_protos_java_proto",
255258
":java_test_protos_java_proto",
256259
":test_util",
257-
"//external:easymock",
258-
"//external:guava",
259-
"//external:junit",
260-
"//external:truth",
261-
]
260+
"@maven//:com_google_guava_guava",
261+
"@maven//:com_google_truth_truth",
262+
"@maven//:junit_junit",
263+
"@maven//:org_easymock_easymock",
264+
],
262265
)
263266

264267
java_lite_proto_library(
@@ -281,17 +284,17 @@ genrule(
281284
name = "rewrite_javalite_test_util",
282285
srcs = [
283286
"//java/lite:lite.awk",
284-
"src/test/java/com/google/protobuf/TestUtil.java"
287+
"src/test/java/com/google/protobuf/TestUtil.java",
285288
],
286289
outs = ["TestUtil.java"],
287-
cmd = "awk -f $(location //java/lite:lite.awk) $(location src/test/java/com/google/protobuf/TestUtil.java) > $@"
290+
cmd = "awk -f $(location //java/lite:lite.awk) $(location src/test/java/com/google/protobuf/TestUtil.java) > $@",
288291
)
289292

290293
java_library(
291294
name = "test_util_lite",
292295
srcs = [
296+
"src/test/java/com/google/protobuf/TestUtilLite.java",
293297
":rewrite_javalite_test_util",
294-
"src/test/java/com/google/protobuf/TestUtilLite.java"
295298
],
296299
visibility = [
297300
"//java/lite:__pkg__",
@@ -300,8 +303,8 @@ java_library(
300303
":generic_test_protos_java_proto_lite",
301304
":java_test_protos_java_proto_lite",
302305
":lite_runtime_only",
303-
"//external:guava",
304-
"//external:junit",
306+
"@maven//:com_google_guava_guava",
307+
"@maven//:junit_junit",
305308
],
306309
)
307310

@@ -350,18 +353,20 @@ LITE_TEST_EXCLUSIONS = [
350353

351354
junit_tests(
352355
name = "lite_tests",
353-
srcs = glob(["src/test/java/**/*.java"], exclude = LITE_TEST_EXCLUSIONS),
356+
size = "large",
357+
srcs = glob(
358+
["src/test/java/**/*.java"],
359+
exclude = LITE_TEST_EXCLUSIONS,
360+
),
354361
data = ["//:testdata"],
355362
test_prefix = "Lite",
356-
size = "large",
357363
deps = [
358-
":lite",
359364
":generic_test_protos_java_proto_lite",
360365
":java_test_protos_java_proto_lite",
366+
":lite",
361367
":test_util_lite",
362-
"//external:easymock",
363-
"//external:junit",
364-
"//external:truth",
365-
]
368+
"@maven//:com_google_truth_truth",
369+
"@maven//:junit_junit",
370+
"@maven//:org_easymock_easymock",
371+
],
366372
)
367-

java/lite/BUILD

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,15 @@ load("@rules_proto//proto:defs.bzl", "proto_lang_toolchain")
33
load("//:internal.bzl", "conformance_test")
44
load("//java/internal:testing.bzl", "junit_tests")
55

6-
exports_files(["lite.awk"], visibility = ["//java/core:__pkg__"])
7-
exports_files(["pom_template.xml"], visibility = ["//java/core:__pkg__"])
6+
exports_files(
7+
["lite.awk"],
8+
visibility = ["//java/core:__pkg__"],
9+
)
10+
11+
exports_files(
12+
["pom_template.xml"],
13+
visibility = ["//java/core:__pkg__"],
14+
)
815

916
alias(
1017
name = "lite",
@@ -22,8 +29,8 @@ proto_lang_toolchain(
2229
test_suite(
2330
name = "tests",
2431
tests = [
25-
"lite_build_test",
2632
"conformance_test",
33+
"lite_build_test",
2734
"lite_tests",
2835
"//java/core:lite_tests",
2936
],
@@ -38,21 +45,21 @@ build_test(
3845

3946
conformance_test(
4047
name = "conformance_test",
41-
testee = "//:conformance_java_lite",
4248
failure_list = "//:conformance/failure_list_java_lite.txt",
49+
testee = "//:conformance_java_lite",
4350
text_format_failure_list = "//:conformance/text_format_failure_list_java_lite.txt",
4451
)
4552

4653
junit_tests(
4754
name = "lite_tests",
48-
srcs = glob(["src/test/**/*.java"]),
4955
size = "small",
56+
srcs = glob(["src/test/**/*.java"]),
5057
deps = [
5158
":lite",
52-
"//external:junit",
53-
"//external:truth",
5459
"//java/core:generic_test_protos_java_proto_lite",
5560
"//java/core:java_test_protos_java_proto_lite",
5661
"//java/core:test_util_lite",
62+
"@maven//:com_google_truth_truth",
63+
"@maven//:junit_junit",
5764
],
5865
)

java/util/BUILD

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,33 +11,34 @@ java_library(
1111
]),
1212
visibility = ["//visibility:public"],
1313
deps = [
14-
"//external:error_prone_annotations",
15-
"//external:j2objc_annotations",
16-
"//external:gson",
17-
"//external:jsr305",
18-
"//external:guava",
1914
"//java/core",
2015
"//java/lite",
16+
"@maven//:com_google_code_findbugs_jsr305",
17+
"@maven//:com_google_code_gson_gson",
18+
"@maven//:com_google_errorprone_error_prone_annotations",
19+
"@maven//:com_google_guava_guava",
20+
"@maven//:com_google_j2objc_j2objc_annotations",
2121
],
2222
)
23+
2324
# Bazel users, don't depend on this target, use :util.
2425
java_export(
2526
name = "util_mvn",
2627
maven_coordinates = "com.google.protobuf:protobuf-java-util:%s" % PROTOBUF_VERSION,
2728
pom_template = "pom_template.xml",
28-
runtime_deps = [":util"],
2929
visibility = ["//java:__pkg__"],
30+
runtime_deps = [":util"],
3031
)
3132

3233
filegroup(
3334
name = "release",
34-
visibility = ["//java:__pkg__"],
3535
srcs = [
36-
":util_mvn-pom",
37-
":util_mvn-maven-source",
3836
":util_mvn-docs",
37+
":util_mvn-maven-source",
38+
":util_mvn-pom",
3939
":util_mvn-project",
40-
]
40+
],
41+
visibility = ["//java:__pkg__"],
4142
)
4243

4344
proto_library(
@@ -60,15 +61,15 @@ java_proto_library(
6061

6162
junit_tests(
6263
name = "tests",
63-
srcs = glob(["src/test/java/**/*.java"]),
6464
package_name = "com.google.protobuf.util",
65+
srcs = glob(["src/test/java/**/*.java"]),
6566
deps = [
6667
":test_protos_java_proto",
6768
":util",
68-
"//external:guava",
69-
"//external:junit",
70-
"//external:truth",
7169
"//java/core",
7270
"//java/core:generic_test_protos_java_proto",
71+
"@maven//:com_google_guava_guava",
72+
"@maven//:com_google_truth_truth",
73+
"@maven//:junit_junit",
7374
],
7475
)

0 commit comments

Comments
 (0)