forked from SeleniumHQ/selenium
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathexport.bzl
121 lines (109 loc) · 3.22 KB
/
export.bzl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
load("@contrib_rules_jvm//java:defs.bzl", "java_library")
load(
"@rules_jvm_external//:defs.bzl",
"javadoc",
"pom_file",
)
load("@rules_jvm_external//private/rules:maven_bom_fragment.bzl", "maven_bom_fragment")
load("@rules_jvm_external//private/rules:maven_project_jar.bzl", "maven_project_jar")
load("@rules_jvm_external//private/rules:maven_publish.bzl", "maven_publish")
load("//java/private:module.bzl", "java_module")
def java_export(
name,
maven_coordinates,
pom_template = None,
hides = [],
uses = [],
opens_to = [],
exports = [],
tags = [],
testonly = None,
visibility = None,
**kwargs):
tags = tags + ["maven_coordinates=%s" % maven_coordinates]
lib_name = "%s-lib" % name
# Construct the java_library we'll export from here.
java_library(
name = lib_name,
tags = tags,
exports = exports,
**kwargs
)
# Merge the jars to create the maven project jar
maven_project_jar(
name = "%s-project" % name,
target = ":%s" % lib_name,
tags = tags,
)
native.filegroup(
name = "%s-maven-artifact" % name,
srcs = [
":%s-project" % name,
],
output_group = "maven_artifact",
)
native.filegroup(
name = "%s-maven-source" % name,
srcs = [
":%s-project" % name,
],
output_group = "maven_source",
)
java_module(
name = "%s-module" % name,
target = ":%s-project" % name,
deps = kwargs.get("deps", []) + kwargs.get("runtime_deps", []),
exports = exports,
hides = hides,
opens_to = opens_to,
tags = tags,
uses = uses,
)
native.filegroup(
name = "%s-maven-module" % name,
srcs = [
":%s-module" % name,
],
output_group = "module_jar",
)
javadoc(
name = "%s-docs" % name,
deps = [
":%s-project" % name,
],
)
pom_file(
name = "%s-pom" % name,
target = ":%s" % lib_name,
pom_template = pom_template,
)
maven_publish(
name = "%s.publish" % name,
coordinates = maven_coordinates,
pom = "%s-pom" % name,
artifact = ":%s-maven-module" % name,
classifier_artifacts = {
":%s-docs" % name: "javadoc",
":%s-maven-source" % name: "sources",
},
visibility = visibility,
)
# We may want to aggregate several `java_export` targets into a single Maven BOM POM
# https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#bill-of-materials-bom-poms
maven_bom_fragment(
name = "%s.bom-fragment" % name,
maven_coordinates = maven_coordinates,
artifact = ":%s" % lib_name,
src_artifact = ":%s-maven-source" % name,
javadoc_artifact = None if "no-javadocs" in tags else ":%s-docs" % name,
pom = ":%s-pom" % name,
testonly = testonly,
tags = tags,
visibility = visibility,
)
# Finally, alias the primary output
native.alias(
name = name,
actual = ":%s-module" % name,
visibility = visibility,
)