Skip to content

Commit 4e02ef4

Browse files
authored
Generate a Maven BOM (#11560)
1 parent 99126df commit 4e02ef4

8 files changed

Lines changed: 145 additions & 12 deletions

File tree

Rakefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,8 @@ JAVA_RELEASE_TARGETS = %w[
106106
//java/src/org/openqa/selenium/firefox:firefox.publish
107107
//java/src/org/openqa/selenium/grid/sessionmap/jdbc:jdbc.publish
108108
//java/src/org/openqa/selenium/grid/sessionmap/redis:redis.publish
109+
//java/src/org/openqa/selenium/grid:bom-dependencies.publish
110+
//java/src/org/openqa/selenium/grid:bom.publish
109111
//java/src/org/openqa/selenium/grid:grid.publish
110112
//java/src/org/openqa/selenium/ie:ie.publish
111113
//java/src/org/openqa/selenium/json:json.publish

WORKSPACE

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -96,22 +96,17 @@ rules_proto_dependencies()
9696

9797
rules_proto_toolchains()
9898

99-
RULES_JVM_EXTERNAL_TAG = "4.5"
100-
101-
RULES_JVM_EXTERNAL_SHA = "b17d7388feb9bfa7f2fa09031b32707df529f26c91ab9e5d909eb1676badd9a6"
102-
10399
http_archive(
104100
name = "rules_jvm_external",
105101
patch_args = [
106102
"-p1",
107103
],
108104
patches = [
109105
"//java:rules_jvm_external_javadoc.patch",
110-
"//java:add_missing_dirs.patch",
111106
],
112-
sha256 = RULES_JVM_EXTERNAL_SHA,
113-
strip_prefix = "rules_jvm_external-%s" % RULES_JVM_EXTERNAL_TAG,
114-
url = "https://github.com/bazelbuild/rules_jvm_external/archive/refs/tags/%s.zip" % RULES_JVM_EXTERNAL_TAG,
107+
sha256 = "b6a142dd4ac191d64c855463d4d3de30a7efd629cc65065a833865e34c261b74",
108+
strip_prefix = "rules_jvm_external-cf8286d9b137ab36b89fc6654ce3e6fe48923778",
109+
url = "https://github.com/bazelbuild/rules_jvm_external/archive/cf8286d9b137ab36b89fc6654ce3e6fe48923778.zip",
115110
)
116111

117112
load("@rules_jvm_external//:repositories.bzl", "rules_jvm_external_deps")

java/BUILD.bazel

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
load("@rules_jvm_external//:defs.bzl", "artifact")
21
load("@contrib_rules_jvm//java:defs.bzl", "spotbugs_config")
2+
load(":defs.bzl", "artifact")
33

44
exports_files(
55
srcs = [

java/defs.bzl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ load(
33
_java_binary = "java_binary",
44
_java_import = "java_import",
55
)
6-
load("@rules_jvm_external//:defs.bzl", _artifact = "artifact", _javadoc = "javadoc")
6+
load("@rules_jvm_external//:defs.bzl", _artifact = "artifact", _javadoc = "javadoc", _maven_bom = "maven_bom")
77
load("//java/private:dist_zip.bzl", _java_dist_zip = "java_dist_zip")
88
load("//java/private:library.bzl", _java_export = "java_export", _java_library = "java_library", _java_test = "java_test")
99
load("//java/private:merge_jars.bzl", _merge_jars = "merge_jars")
@@ -29,6 +29,7 @@ java_module = _java_module
2929
java_selenium_test_suite = _java_selenium_test_suite
3030
java_test = _java_test
3131
javadoc = _javadoc
32+
maven_bom = _maven_bom
3233
merge_jars = _merge_jars
3334
selenium_test = _selenium_test
3435
JUNIT5_DEPS = _JUNIT5_DEPS

java/private/export.bzl

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ load(
33
"javadoc",
44
"pom_file",
55
)
6+
load("@rules_jvm_external//private/rules:maven_bom_fragment.bzl", "maven_bom_fragment")
67
load("@rules_jvm_external//private/rules:maven_project_jar.bzl", "maven_project_jar")
78
load("@rules_jvm_external//private/rules:maven_publish.bzl", "maven_publish")
89
load("//java/private:module.bzl", "java_module")
@@ -16,6 +17,7 @@ def java_export(
1617
opens_to = [],
1718
exports = [],
1819
tags = [],
20+
testonly = None,
1921
visibility = None,
2022
**kwargs):
2123
tags = tags + ["maven_coordinates=%s" % maven_coordinates]
@@ -94,6 +96,20 @@ def java_export(
9496
visibility = visibility,
9597
)
9698

99+
# We may want to aggregate several `java_export` targets into a single Maven BOM POM
100+
# https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#bill-of-materials-bom-poms
101+
maven_bom_fragment(
102+
name = "%s.bom-fragment" % name,
103+
maven_coordinates = maven_coordinates,
104+
artifact = ":%s" % lib_name,
105+
src_artifact = ":%s-maven-source" % name,
106+
javadoc_artifact = None if "no-javadocs" in tags else ":%s-docs" % name,
107+
pom = ":%s-pom" % name,
108+
testonly = testonly,
109+
tags = tags,
110+
visibility = visibility,
111+
)
112+
97113
# Finally, alias the primary output
98114
native.alias(
99115
name = name,

java/private/module.bzl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ def _java_module_impl(ctx):
169169
)
170170

171171
return [
172-
DefaultInfo(files = depset([module_jar, src_jar])),
172+
DefaultInfo(files = depset([module_jar])),
173173
JavaModuleInfo(
174174
name = name,
175175
module_path = depset(direct = [module_jar], transitive = [info.module_path for info in all_infos]),

java/src/org/openqa/selenium/grid/BUILD.bazel

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,15 @@
11
load("@rules_jvm_external//:defs.bzl", "artifact")
22
load("//common:defs.bzl", "copy_file")
3-
load("//java:defs.bzl", "java_binary", "java_dist_zip", "java_export", "java_library", "javadoc", "merge_jars")
3+
load(
4+
"//java:defs.bzl",
5+
"java_binary",
6+
"java_dist_zip",
7+
"java_export",
8+
"java_library",
9+
"javadoc",
10+
"maven_bom",
11+
"merge_jars",
12+
)
413
load("//java:version.bzl", "SE_VERSION")
514
load("//java/src/org/openqa/selenium/devtools:versions.bzl", "CDP_DEPS")
615

@@ -82,6 +91,36 @@ java_library(
8291
],
8392
)
8493

94+
# Generated from: bazel query 'kind(maven_publish, set(//java/... //third_party/...))' | sort
95+
# with the selenium rc, bom dependencies (naturally), and CDP implementations removed.
96+
maven_bom(
97+
name = "bom",
98+
bom_pom_template = "bom-pom-template.xml",
99+
dependencies_maven_coordinates = "org.seleniumhq.selenium:selenium-dependencies-bom:%s" % SE_VERSION,
100+
dependencies_pom_template = "bom-pom-template.xml",
101+
java_exports = [
102+
"//java/src/org/openqa/selenium/chrome:chrome",
103+
"//java/src/org/openqa/selenium/chromium:chromium",
104+
"//java/src/org/openqa/selenium/edge:edge",
105+
"//java/src/org/openqa/selenium/firefox:firefox",
106+
"//java/src/org/openqa/selenium/grid/sessionmap/jdbc:jdbc",
107+
"//java/src/org/openqa/selenium/grid/sessionmap/redis:redis",
108+
"//java/src/org/openqa/selenium/grid:grid",
109+
"//java/src/org/openqa/selenium/ie:ie",
110+
"//java/src/org/openqa/selenium/json:json",
111+
"//java/src/org/openqa/selenium/lift:lift",
112+
"//java/src/org/openqa/selenium/manager:manager",
113+
"//java/src/org/openqa/selenium/remote/http/jdk:jdk",
114+
"//java/src/org/openqa/selenium/remote/http:http",
115+
"//java/src/org/openqa/selenium/remote:remote",
116+
"//java/src/org/openqa/selenium/safari:safari",
117+
"//java/src/org/openqa/selenium/support:support",
118+
"//java/src/org/openqa/selenium:client-combined",
119+
"//java/src/org/openqa/selenium:core",
120+
] + CDP_DEPS,
121+
maven_coordinates = "org.seleniumhq.selenium:selenium-bom:%s" % SE_VERSION,
122+
)
123+
85124
java_export(
86125
name = "grid",
87126
srcs = glob(
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<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"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
4+
5+
<modelVersion>4.0.0</modelVersion>
6+
7+
<groupId>{groupId}</groupId>
8+
<artifactId>{artifactId}</artifactId>
9+
<version>{version}</version>
10+
<packaging>pom</packaging>
11+
12+
<name>{groupId}:{artifactId}</name>
13+
<description>Selenium automates browsers. That's it! What you do with that power is entirely up to you.</description>
14+
<url>https://selenium.dev/</url>
15+
16+
<licenses>
17+
<license>
18+
<name>The Apache Software License, Version 2.0</name>
19+
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
20+
<distribution>repo</distribution>
21+
</license>
22+
</licenses>
23+
24+
<scm>
25+
<url>https://github.com/SeleniumHQ/selenium/</url>
26+
<connection>scm:git:https://github.com/SeleniumHQ/selenium.git</connection>
27+
<developerConnection>scm:git:[email protected]:SeleniumHQ/selenium.git</developerConnection>
28+
</scm>
29+
30+
<developers>
31+
<developer>
32+
<id>simon.m.stewart</id>
33+
<name>Simon Stewart</name>
34+
<roles>
35+
<role>Owner</role>
36+
</roles>
37+
</developer>
38+
<developer>
39+
<id>barancev</id>
40+
<name>Alexei Barantsev</name>
41+
<roles>
42+
<role>Committer</role>
43+
</roles>
44+
</developer>
45+
<developer>
46+
<id>diemol</id>
47+
<name>Diego Molina</name>
48+
<roles>
49+
<role>Committer</role>
50+
</roles>
51+
</developer>
52+
<developer>
53+
<id>james.h.evans.jr</id>
54+
<name>Jim Evans</name>
55+
<roles>
56+
<role>Committer</role>
57+
</roles>
58+
</developer>
59+
<developer>
60+
<id>theautomatedtester</id>
61+
<name>David Burns</name>
62+
<roles>
63+
<role>Committer</role>
64+
</roles>
65+
</developer>
66+
<developer>
67+
<id>titusfortner</id>
68+
<name>Titus Fortner</name>
69+
<roles>
70+
<role>Committer</role>
71+
</roles>
72+
</developer>
73+
</developers>
74+
75+
<dependencyManagement>
76+
<dependencies>
77+
{dependencies}
78+
</dependencies>
79+
</dependencyManagement>
80+
</project>

0 commit comments

Comments
 (0)