blob: 98680bde0a1c11ff6437ee12659720d855277313 [file] [log] [blame]
Ray Milkey3275ae82018-05-29 15:35:36 -07001"""
2 Copyright 2018-present Open Networking Foundation
3
4 Licensed under the Apache License, Version 2.0 (the "License");
5 you may not use this file except in compliance with the License.
6 You may obtain a copy of the License at
7
8 http://www.apache.org/licenses/LICENSE-2.0
9
10 Unless required by applicable law or agreed to in writing, software
11 distributed under the License is distributed on an "AS IS" BASIS,
12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 See the License for the specific language governing permissions and
14 limitations under the License.
15"""
16
Ray Milkey7dac7da2017-08-01 16:56:05 -070017load("//tools/build/bazel:generate_workspace.bzl", "COMPILE", "TEST")
18load("//tools/build/bazel:variables.bzl", "ONOS_VERSION")
19load("//tools/build/bazel:generate_test_rules.bzl", "generate_test_rules")
Ray Milkeyb7949e72018-06-19 18:31:02 -070020load("//tools/build/bazel:checkstyle.bzl", "checkstyle_test")
Ray Milkey7dac7da2017-08-01 16:56:05 -070021
Ray Milkey32ea35c2018-06-06 15:28:07 -070022def _all_java_sources():
Ray Milkey0bcdfd12018-05-23 14:07:19 -070023 return native.glob(["src/main/java/**/*.java"])
Ray Milkey7dac7da2017-08-01 16:56:05 -070024
Ray Milkey32ea35c2018-06-06 15:28:07 -070025def _all_java_test_sources():
Ray Milkey0bcdfd12018-05-23 14:07:19 -070026 return native.glob(["src/test/java/**/*.java"])
Ray Milkey7dac7da2017-08-01 16:56:05 -070027
Ray Milkey32ea35c2018-06-06 15:28:07 -070028def _all_test_resources():
Ray Milkey0bcdfd12018-05-23 14:07:19 -070029 return native.glob(["src/test/resources/**"])
Ray Milkey7dac7da2017-08-01 16:56:05 -070030
Ray Milkey32ea35c2018-06-06 15:28:07 -070031def _all_resources(resources_root):
Ray Milkey0bcdfd12018-05-23 14:07:19 -070032 if resources_root == None:
33 return native.glob(["src/main/resources/**"])
34 else:
35 return native.glob([resources_root + "**"])
Ray Milkey7dac7da2017-08-01 16:56:05 -070036
Ray Milkey25747d82018-06-13 14:12:51 -070037def _webapp():
Ray Milkey6b3775a2018-06-28 11:18:44 -070038 return native.glob(["src/main/webapp/WEB-INF/web.xml"])
39
40def _include_resources_to_string(include_resources):
41 result = ""
42 for (path, filename) in include_resources.items():
43 result += (path + "=" + filename)
44 return result
Ray Milkey25747d82018-06-13 14:12:51 -070045
Ray Milkey275af2c2018-06-15 13:05:08 -070046"""
47 Implementation of the rule to call bnd to make an OSGI jar file
48"""
Ray Milkey6b3775a2018-06-28 11:18:44 -070049
Ray Milkey7dac7da2017-08-01 16:56:05 -070050def _bnd_impl(ctx):
Ray Milkey3275ae82018-05-29 15:35:36 -070051 if (len(ctx.files.source) == 1):
52 input_file = ctx.files.source[0]
53 else:
54 # this is a list of inputs. The one we want is the last one
55 # in the list that isn't a source jar
56 for file in reversed(ctx.files.source):
57 if ("-src" in file.path):
58 continue
59 else:
60 input_file = file
61 break
62
63 jar = input_file.path
Ray Milkey0bcdfd12018-05-23 14:07:19 -070064 output = ctx.outputs.osgi_jar.path
Thomas Vachuska8e022a92018-07-10 14:47:38 -070065 name = ctx.attr.name
Ray Milkey275af2c2018-06-15 13:05:08 -070066 group = ctx.attr.group
Ray Milkey0bcdfd12018-05-23 14:07:19 -070067 version = ctx.attr.version
68 license = ""
Ray Milkey12ae6ca2018-06-11 15:34:30 -070069 import_packages = ctx.attr.import_packages
Ray Milkey0bcdfd12018-05-23 14:07:19 -070070 exportPackages = "*"
Ray Milkey6b3775a2018-06-28 11:18:44 -070071 include_resources = ctx.attr.include_resources
Ray Milkey25747d82018-06-13 14:12:51 -070072 web_context = ctx.attr.web_context
73 if web_context == None or web_context == "":
74 web_context = "NONE"
75 web_xml = ctx.attr.web_xml
Ray Milkey0bcdfd12018-05-23 14:07:19 -070076 dynamicimportPackages = ""
Ray Milkey3275ae82018-05-29 15:35:36 -070077 cp = ""
Ray Milkey7dac7da2017-08-01 16:56:05 -070078
Ray Milkey3275ae82018-05-29 15:35:36 -070079 inputDependencies = [input_file]
Ray Milkey7dac7da2017-08-01 16:56:05 -070080
Ray Milkey0bcdfd12018-05-23 14:07:19 -070081 # determine the dependencies and build the class path
82 for dep in ctx.attr.deps:
Ray Milkey25b785a2018-06-12 09:59:14 -070083 if java_common.provider in dep:
84 file = dep.files.to_list()[0]
Ray Milkey472d8392018-05-23 17:06:51 -070085
Ray Milkey25b785a2018-06-12 09:59:14 -070086 if cp:
87 cp += ":"
88 cp += file.path
89 inputDependencies = inputDependencies + [file]
Ray Milkey7dac7da2017-08-01 16:56:05 -070090
Ray Milkey0bcdfd12018-05-23 14:07:19 -070091 # extract the class files for use by bnd
Ray Milkey3275ae82018-05-29 15:35:36 -070092 classes = ctx.actions.declare_file("classes" + ctx.label.name.replace("/", "-"))
Ray Milkey0bcdfd12018-05-23 14:07:19 -070093 classesPath = classes.path
94 jarCommand = "mkdir -p %s && cp %s %s && cd %s && jar xf *.jar" % (classesPath, jar, classesPath, classesPath)
95 ctx.actions.run_shell(
96 inputs = inputDependencies,
97 outputs = [classes],
98 command = jarCommand,
99 progress_message = "Expanding jar file: %s" % jar,
100 )
101 inputDependencies += [classes]
Ray Milkey25747d82018-06-13 14:12:51 -0700102 web_xml_root_path = ""
103 if len(web_xml) != 0:
104 web_xml_root = web_xml[0].files.to_list()[0]
105 inputDependencies += [web_xml_root]
106 web_xml_root_path = web_xml_root.path.replace("WEB-INF/web.xml", "")
Ray Milkey7dac7da2017-08-01 16:56:05 -0700107
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700108 # call bnd to make the OSGI jar file
109 arguments = [
110 jar,
111 output,
112 cp,
113 name,
114 group,
115 version,
116 license,
Ray Milkey12ae6ca2018-06-11 15:34:30 -0700117 import_packages,
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700118 exportPackages,
Ray Milkey6b3775a2018-06-28 11:18:44 -0700119 include_resources,
Ray Milkey25747d82018-06-13 14:12:51 -0700120 web_context,
121 web_xml_root_path,
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700122 dynamicimportPackages,
123 classesPath,
124 ]
Ray Milkey12ae6ca2018-06-11 15:34:30 -0700125
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700126 ctx.actions.run(
127 inputs = inputDependencies,
128 outputs = [ctx.outputs.osgi_jar],
129 arguments = arguments,
130 progress_message = "Running bnd wrapper on: %s" % ctx.attr.name,
131 executable = ctx.executable._bnd_exe,
132 )
Ray Milkey7dac7da2017-08-01 16:56:05 -0700133
Ray Milkey25b785a2018-06-12 09:59:14 -0700134 deps = []
135 if java_common.provider in ctx.attr.source:
136 deps.append(ctx.attr.source[java_common.provider])
137 deps_provider = java_common.merge(deps)
138 return struct(
Ray Milkey15053f02018-06-13 10:00:45 -0700139 providers = [deps_provider],
Ray Milkey25b785a2018-06-12 09:59:14 -0700140 )
141
Ray Milkey275af2c2018-06-15 13:05:08 -0700142"""
143 Rule definition for calling bnd to make an OSGi jar file.
144"""
Ray Milkey32ea35c2018-06-06 15:28:07 -0700145_bnd = rule(
Ray Milkey7dac7da2017-08-01 16:56:05 -0700146 attrs = {
147 "deps": attr.label_list(),
148 "version": attr.string(),
Ray Milkey275af2c2018-06-15 13:05:08 -0700149 "group": attr.string(),
Ray Milkey3275ae82018-05-29 15:35:36 -0700150 "source": attr.label(),
Ray Milkey12ae6ca2018-06-11 15:34:30 -0700151 "import_packages": attr.string(),
Ray Milkey25747d82018-06-13 14:12:51 -0700152 "web_context": attr.string(),
153 "web_xml": attr.label_list(allow_files = True),
Ray Milkey6b3775a2018-06-28 11:18:44 -0700154 "include_resources": attr.string(),
Ray Milkey7dac7da2017-08-01 16:56:05 -0700155 "_bnd_exe": attr.label(
156 executable = True,
157 cfg = "host",
158 allow_files = True,
159 default = Label("//utils/osgiwrap:osgi-jar"),
160 ),
161 },
162 fragments = ["java"],
163 outputs = {
164 "osgi_jar": "lib%{name}.jar",
165 },
166 implementation = _bnd_impl,
167)
168
Ray Milkey275af2c2018-06-15 13:05:08 -0700169"""
170 Implementation of the rule to call swagger generator to create the registrator java class source
171"""
Ray Milkey6b3775a2018-06-28 11:18:44 -0700172
Ray Milkey275af2c2018-06-15 13:05:08 -0700173def _swagger_java_impl(ctx):
174 api_title = ctx.attr.api_title
175 api_version = ctx.attr.api_version
176 api_description = ctx.attr.api_description
177 api_package = ctx.attr.api_package
178 web_context = ctx.attr.web_context
179
180 output_java = ctx.outputs.swagger_java.path
Ray Milkey6b3775a2018-06-28 11:18:44 -0700181 output_dir = output_java[:output_java.find("generated-sources")]
Ray Milkey275af2c2018-06-15 13:05:08 -0700182
183 package_name = ctx.attr.package_name
184
185 srcs_arg = ""
186 resources_arg = ""
187 input_dependencies = []
188
189 for file in ctx.files.srcs:
190 srcs_arg += file.path + ","
191 input_dependencies.append(file)
192
193 for resource in resources_arg:
194 resources_arg += resource.path + ","
195
196 # call swagger generator to make the swagger JSON and java files
197 arguments = [
198 srcs_arg,
199 resources_arg,
200 "",
201 package_name + "/src/main/resources",
202 output_dir,
203 output_dir,
204 web_context,
205 api_title,
206 api_version,
207 api_package,
208 api_description,
209 ]
210
211 ctx.actions.run(
212 inputs = ctx.files.srcs,
213 outputs = [ctx.outputs.swagger_java],
214 arguments = arguments,
215 progress_message = "Running swagger generator on: %s" % ctx.attr.name,
216 executable = ctx.executable._swagger_generator_exe,
217 )
218
219"""
220Implementation of the rule to call swagger generator for swagger.json file
221"""
Ray Milkey6b3775a2018-06-28 11:18:44 -0700222
Ray Milkey275af2c2018-06-15 13:05:08 -0700223def _swagger_json_impl(ctx):
224 api_title = ctx.attr.api_title
225 api_version = ctx.attr.api_version
226 api_description = ctx.attr.api_description
227 api_package = ctx.attr.api_package
228 web_context = ctx.attr.web_context
229
230 output_json = ctx.outputs.swagger_json.path
231 output_dir = output_json[:output_json.find("swagger.json")]
232
233 package_name = ctx.attr.package_name
234
235 srcs_arg = ""
236 resources_arg = ""
237 input_dependencies = []
238
239 for file in ctx.files.srcs:
240 srcs_arg += file.path + ","
241 input_dependencies.append(file)
242
243 for resource in resources_arg:
244 resources_arg += resource.path + ","
245
246 # call swagger generator to make the swagger JSON and java files
247 arguments = [
248 srcs_arg,
249 resources_arg,
250 "",
251 package_name + "/src/main/resources",
252 output_dir,
253 output_dir,
254 web_context,
255 api_title,
256 api_version,
257 api_package,
258 api_description,
259 ]
260
261 ctx.actions.run(
262 inputs = ctx.files.srcs,
263 outputs = [ctx.outputs.swagger_json],
264 arguments = arguments,
265 progress_message = "Running swagger generator on: %s" % ctx.attr.name,
266 executable = ctx.executable._swagger_generator_exe,
267 )
268
269"""
270 Rule definition to call swagger generator to create the registrator java class source
271"""
272_swagger_java = rule(
273 attrs = {
274 "srcs": attr.label_list(allow_files = True),
275 "package_name": attr.string(),
276 "api_title": attr.string(),
277 "api_version": attr.string(),
278 "api_description": attr.string(),
279 "api_package": attr.string(),
280 "web_context": attr.string(),
281 "_swagger_generator_exe": attr.label(
282 executable = True,
283 cfg = "host",
284 allow_files = True,
285 default = Label("//tools/build/buck-plugin:swagger_generator"),
286 ),
287 "swagger_java": attr.output(),
288 },
289 fragments = ["java"],
290 implementation = _swagger_java_impl,
291)
292
293"""
294 Rule definition to call swagger generator to create the swagger JSON
295"""
296_swagger_json = rule(
297 attrs = {
298 "srcs": attr.label_list(allow_files = True),
299 "package_name": attr.string(),
300 "api_title": attr.string(),
301 "api_version": attr.string(),
302 "api_description": attr.string(),
303 "api_package": attr.string(),
304 "web_context": attr.string(),
305 "_swagger_generator_exe": attr.label(
306 executable = True,
307 cfg = "host",
308 allow_files = True,
309 default = Label("//tools/build/buck-plugin:swagger_generator"),
310 ),
311 "swagger_json": attr.output(),
312 },
313 fragments = ["java"],
314 implementation = _swagger_json_impl,
315)
316
317"""
318 Converts a jar file to an OSGI compatible jar file.
319
320 Args:
321 name: name of the rule to create the OSGI jar file - required
322 jar: jar file to convert - required target
323 deps: dependencies needed by the jar file - required list of targets
324 version: Version of the generated jar file. Optional, defaults to the current ONOS version
325 group: Maven group ID for the resulting jar file. Optional, defaults to 'org.onosproject'
326 import_packages: OSGI import list. Optional, comma separated list, defaults to "*"
327 visibility: Visibility of the produced jar file to other BUILDs. Optional, defaults to private
328"""
Ray Milkey6b3775a2018-06-28 11:18:44 -0700329
Ray Milkey25747d82018-06-13 14:12:51 -0700330def wrapped_osgi_jar(
331 name,
332 jar,
333 deps,
334 version = ONOS_VERSION,
Ray Milkey275af2c2018-06-15 13:05:08 -0700335 group = "org.onosproject",
Ray Milkey25747d82018-06-13 14:12:51 -0700336 import_packages = "*",
Ray Milkey25747d82018-06-13 14:12:51 -0700337 visibility = ["//visibility:private"]):
338 _bnd(
339 name = name,
340 source = jar,
341 deps = deps,
342 version = version,
Ray Milkey275af2c2018-06-15 13:05:08 -0700343 group = group,
Ray Milkey25747d82018-06-13 14:12:51 -0700344 visibility = visibility,
345 import_packages = import_packages,
Ray Milkey275af2c2018-06-15 13:05:08 -0700346 web_xml = None,
Ray Milkey25747d82018-06-13 14:12:51 -0700347 )
Ray Milkey7dac7da2017-08-01 16:56:05 -0700348
Ray Milkey275af2c2018-06-15 13:05:08 -0700349"""
350 Creates an OSGI jar and test jar file from a set of source and test files.
351 See osgi_jar() for a description of shared parameters.
352 Args:
353 test_srcs: Test source file(s) to compile. Optional list of targets, defaults to src/test/java/**/*.java
354 test_deps: Dependencies for the test jar. Optional list of targets, defaults to a common set of dependencies
355 test_resources: Resources to include in the test jar. Optional list of targets, defaults to src/test/resources/**
356 exclude_tests: Tests that should not be run. Useful for excluding things like test files without any @Test methods.
357 Optional ist of targets, defaults to []
358"""
Ray Milkey6b3775a2018-06-28 11:18:44 -0700359
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700360def osgi_jar_with_tests(
361 name = None,
362 deps = None,
363 test_deps = None,
Ray Milkey275af2c2018-06-15 13:05:08 -0700364 group = "org.onosproject",
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700365 srcs = None,
366 resources_root = None,
367 resources = None,
Thomas Vachuskaf8c8cb92018-07-11 17:12:43 -0700368 resource_jars = [],
Ray Milkey6b3775a2018-06-28 11:18:44 -0700369 include_resources = {},
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700370 test_srcs = None,
371 exclude_tests = None,
372 test_resources = None,
373 visibility = ["//visibility:public"],
Ray Milkey12ae6ca2018-06-11 15:34:30 -0700374 version = ONOS_VERSION,
Thomas Vachuska5b9ff6a2018-07-13 11:00:50 -0700375 suppress_errorprone = False,
Ray Milkey25747d82018-06-13 14:12:51 -0700376 web_context = None,
377 api_title = "",
378 api_version = "",
379 api_description = "",
380 api_package = "",
Ray Milkey15053f02018-06-13 10:00:45 -0700381 import_packages = None):
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700382 if name == None:
383 name = "onos-" + native.package_name().replace("/", "-")
Ray Milkey7dac7da2017-08-01 16:56:05 -0700384 if srcs == None:
Ray Milkey32ea35c2018-06-06 15:28:07 -0700385 srcs = _all_java_sources()
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700386 if resources == None:
Ray Milkey32ea35c2018-06-06 15:28:07 -0700387 resources = _all_resources(resources_root)
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700388 if test_srcs == None:
Ray Milkey32ea35c2018-06-06 15:28:07 -0700389 test_srcs = _all_java_test_sources()
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700390 if test_resources == None:
Ray Milkey32ea35c2018-06-06 15:28:07 -0700391 test_resources = _all_test_resources()
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700392 if exclude_tests == None:
393 exclude_tests = []
Ray Milkey7dac7da2017-08-01 16:56:05 -0700394 if deps == None:
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700395 deps = COMPILE
396 if test_deps == None:
397 test_deps = TEST
Ray Milkey12ae6ca2018-06-11 15:34:30 -0700398 if import_packages == None:
399 import_packages = "*"
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700400 tests_name = name + "-tests"
401 tests_jar_deps = list(depset(deps + test_deps)) + [name]
402 all_test_deps = tests_jar_deps + [tests_name]
Ray Milkey25747d82018-06-13 14:12:51 -0700403 web_xml = _webapp()
Ray Milkey7dac7da2017-08-01 16:56:05 -0700404
Ray Milkey275af2c2018-06-15 13:05:08 -0700405 native_srcs = srcs
406 native_resources = resources
Ray Milkey6b3775a2018-06-28 11:18:44 -0700407 if web_context != None and api_title != "" and len(resources) != 0:
Ray Milkey275af2c2018-06-15 13:05:08 -0700408 # generate Swagger files if needed
409 _swagger_java(
410 name = name + "_swagger_java",
411 srcs = srcs + resources,
412 package_name = native.package_name(),
413 api_title = api_title,
414 api_version = api_version,
415 api_description = api_description,
416 web_context = web_context,
417 api_package = api_package,
418 swagger_java = ("src/main/resources/apidoc/generated-sources/" +
Ray Milkey6b3775a2018-06-28 11:18:44 -0700419 api_package.replace(".", "/") +
420 "/ApiDocRegistrator.java").replace("//", "/"),
Ray Milkey275af2c2018-06-15 13:05:08 -0700421 )
422 _swagger_json(
423 name = name + "_swagger_json",
424 srcs = srcs + resources,
425 package_name = native.package_name(),
426 api_title = api_title,
427 api_version = api_version,
428 api_description = api_description,
429 web_context = web_context,
430 api_package = api_package,
431 swagger_json = "src/main/resources/apidoc/swagger.json",
432 )
433 native_resources = []
434 for r in resources:
Ray Milkey6b3775a2018-06-28 11:18:44 -0700435 if not "definitions" in r:
Ray Milkey275af2c2018-06-15 13:05:08 -0700436 native_resources.append(r)
Ray Milkey6b3775a2018-06-28 11:18:44 -0700437 native_srcs = srcs + [name + "_swagger_java"]
438 native_resources.append(name + "_swagger_json")
Ray Milkey275af2c2018-06-15 13:05:08 -0700439
Thomas Vachuska5b9ff6a2018-07-13 11:00:50 -0700440 javacopts = [ "-XepDisableAllChecks" ] if suppress_errorprone else []
441
Ray Milkey25747d82018-06-13 14:12:51 -0700442 # compile the Java code
Thomas Vachuskaf8c8cb92018-07-11 17:12:43 -0700443 if len(resource_jars) > 0:
444 native.java_library(name = name + "-native", srcs = native_srcs, resource_jars = resource_jars,
Thomas Vachuska5b9ff6a2018-07-13 11:00:50 -0700445 deps = deps, visibility = visibility, javacopts = javacopts)
Thomas Vachuskaf8c8cb92018-07-11 17:12:43 -0700446 else:
447 native.java_library(name = name + "-native", srcs = native_srcs, resources = native_resources,
Thomas Vachuska5b9ff6a2018-07-13 11:00:50 -0700448 deps = deps, visibility = visibility, javacopts = javacopts)
Ray Milkey25747d82018-06-13 14:12:51 -0700449
Ray Milkey32ea35c2018-06-06 15:28:07 -0700450 _bnd(
Ray Milkey25b785a2018-06-12 09:59:14 -0700451 name = name,
452 source = name + "-native",
Ray Milkey32ea35c2018-06-06 15:28:07 -0700453 deps = deps,
454 version = version,
Ray Milkey275af2c2018-06-15 13:05:08 -0700455 group = group,
Ray Milkey32ea35c2018-06-06 15:28:07 -0700456 visibility = visibility,
Ray Milkey12ae6ca2018-06-11 15:34:30 -0700457 import_packages = import_packages,
Ray Milkey25747d82018-06-13 14:12:51 -0700458 web_context = web_context,
459 web_xml = web_xml,
Ray Milkey6b3775a2018-06-28 11:18:44 -0700460 include_resources = _include_resources_to_string(include_resources),
Ray Milkey32ea35c2018-06-06 15:28:07 -0700461 )
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700462 if test_srcs != []:
463 native.java_library(
464 name = tests_name,
465 srcs = test_srcs,
466 resources = test_resources,
467 deps = tests_jar_deps,
468 visibility = visibility,
469 )
Ray Milkey7dac7da2017-08-01 16:56:05 -0700470
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700471 generate_test_rules(
472 name = name + "-tests-gen",
473 test_files = test_srcs,
474 exclude_tests = exclude_tests,
475 deps = all_test_deps,
476 )
477
Ray Milkeyb7949e72018-06-19 18:31:02 -0700478 checkstyle_test(
479 name = name + "_checkstyle_test",
480 srcs = srcs,
481 )
482
Ray Milkey275af2c2018-06-15 13:05:08 -0700483"""
484 Creates an OSGI jar file from a set of source files.
485
486 Args:
487 name: Name of the rule to generate. Optional, defaults to a name based on the location in the source tree.
488 For example apps/mcast/app becomes onos-apps-mcast-app
489 deps: Dependencies of the generated jar file. Expressed as a list of targets
490 import_packages: OSGI import list. Optional, comma separated list, defaults to "*"
491 group: Maven group ID for the resulting jar file. Optional, defaults to 'org.onosproject'
492 srcs: Source file(s) to compile. Optional list of targets, defaults to src/main/java/**/*.java
493 resources_root: Relative path to the root of the tree of resources for this jar. Optional, defaults to src/main/resources
494 resources: Resources to include in the jar file. Optional list of targets, defaults to all files beneath resources_root
495 visibility: Visibility of the produced jar file to other BUILDs. Optional, defaults to public
496 version: Version of the generated jar file. Optional, defaults to the current ONOS version
497 web_context: Web context for a WAB file if needed. Only needed if the jar file provides a REST API. Optional string
498 api_title: Swagger API title. Optional string, only used if the jar file provides a REST API and has swagger annotations
499 api_version: Swagger API version. Optional string, only used if the jar file provides a REST API and has swagger annotations
500 api_description: Swagger API description. Optional string, only used if the jar file provides a REST API and has swagger annotations
501 api_package: Swagger API package name. Optional string, only used if the jar file provides a REST API and has swagger annotations
502"""
Ray Milkey6b3775a2018-06-28 11:18:44 -0700503
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700504def osgi_jar(
505 name = None,
506 deps = None,
Ray Milkey12ae6ca2018-06-11 15:34:30 -0700507 import_packages = None,
Ray Milkey275af2c2018-06-15 13:05:08 -0700508 group = "org.onosproject",
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700509 srcs = None,
510 resources_root = None,
511 resources = None,
Thomas Vachuskaf8c8cb92018-07-11 17:12:43 -0700512 resource_jars = [],
Ray Milkey6b3775a2018-06-28 11:18:44 -0700513 include_resources = {},
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700514 visibility = ["//visibility:public"],
Ray Milkey12ae6ca2018-06-11 15:34:30 -0700515 version = ONOS_VERSION,
Thomas Vachuska5b9ff6a2018-07-13 11:00:50 -0700516 suppress_errorprone = False,
Ray Milkey25747d82018-06-13 14:12:51 -0700517 web_context = None,
Ray Milkey12ae6ca2018-06-11 15:34:30 -0700518 api_title = "",
519 api_version = "",
520 api_description = "",
Ray Milkey15053f02018-06-13 10:00:45 -0700521 api_package = ""):
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700522 if srcs == None:
Ray Milkey32ea35c2018-06-06 15:28:07 -0700523 srcs = _all_java_sources()
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700524 if deps == None:
525 deps = COMPILE
526
527 osgi_jar_with_tests(
528 name = name,
529 deps = deps,
530 test_deps = [],
Ray Milkey275af2c2018-06-15 13:05:08 -0700531 group = group,
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700532 srcs = srcs,
533 resources = resources,
534 resources_root = resources_root,
Thomas Vachuskaf8c8cb92018-07-11 17:12:43 -0700535 resource_jars = resource_jars,
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700536 test_srcs = [],
537 exclude_tests = [],
538 test_resources = [],
539 visibility = visibility,
Thomas Vachuska5b9ff6a2018-07-13 11:00:50 -0700540 suppress_errorprone = suppress_errorprone,
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700541 version = version,
Ray Milkey12ae6ca2018-06-11 15:34:30 -0700542 import_packages = import_packages,
Ray Milkey275af2c2018-06-15 13:05:08 -0700543 api_title = api_title,
544 api_version = api_version,
545 api_description = api_description,
546 api_package = api_package,
Ray Milkey25747d82018-06-13 14:12:51 -0700547 web_context = web_context,
Ray Milkey0bcdfd12018-05-23 14:07:19 -0700548 )