Bazel: Support building with Java 9
Bazel@HEAD supports Java 9 and the upcoming Bazel release 0.15.0 will
include Java 9 JDK.
Test Plan:
$ bazel test \
--host_java_toolchain=@bazel_tools//tools/jdk:toolchain_java9 \
--java_toolchain=@bazel_tools//tools/jdk:toolchain_java9 //...
Change-Id: I9d6b716391bbf96b0894a8f3be900bcf8ef48903
This commit is contained in:
7
BUILD
7
BUILD
@@ -3,6 +3,13 @@ package(default_visibility = ["//visibility:public"])
|
||||
load("//tools/bzl:genrule2.bzl", "genrule2")
|
||||
load("//tools/bzl:pkg_war.bzl", "pkg_war")
|
||||
|
||||
config_setting(
|
||||
name = "java9",
|
||||
values = {
|
||||
"java_toolchain": "@bazel_tools//tools/jdk:toolchain_java9",
|
||||
},
|
||||
)
|
||||
|
||||
genrule(
|
||||
name = "gen_version",
|
||||
outs = ["version.txt"],
|
||||
|
||||
@@ -14,6 +14,28 @@ To build Gerrit from source, you need:
|
||||
* zip, unzip
|
||||
* gcc
|
||||
|
||||
[[Java 9 support]]
|
||||
Java 9 is supported through alternative java toolchain
|
||||
link:https://docs.bazel.build/versions/master/toolchains.html[Bazel option].
|
||||
The Java 9 support is backwards compatible. Java 8 is still the default.
|
||||
To build Gerrit with Java 9, specify JDK 9 java toolchain:
|
||||
|
||||
```
|
||||
$ bazel build \
|
||||
--host_java_toolchain=@bazel_tools//tools/jdk:toolchain_java9 \
|
||||
--java_toolchain=@bazel_tools//tools/jdk:toolchain_java9 \
|
||||
:release
|
||||
```
|
||||
|
||||
Note that the following option must be added to `container.javaOptions`
|
||||
in `$gerrit_site/etc/gerrit.config` to run Gerrit with Java 9:
|
||||
|
||||
```
|
||||
[container]
|
||||
javaOptions = --add-modules java.activation \
|
||||
--add-opens=jdk.management/com.sun.management.internal=ALL-UNNAMED
|
||||
```
|
||||
|
||||
[[build]]
|
||||
== Building on the Command Line
|
||||
|
||||
|
||||
@@ -67,7 +67,18 @@ def junit_tests(name, srcs, **kwargs):
|
||||
_GenSuite(name = s_name,
|
||||
srcs = srcs,
|
||||
outname = s_name)
|
||||
jvm_flags = kwargs.get("jvm_flags", [])
|
||||
jvm_flags = jvm_flags + select({
|
||||
"//:java9": [
|
||||
# Enforce JDK 8 compatibility on Java 9, see
|
||||
# https://docs.oracle.com/javase/9/intl/internationalization-enhancements-jdk-9.htm#JSINT-GUID-AF5AECA7-07C1-4E7D-BC10-BC7E73DC6C7F
|
||||
"-Djava.locale.providers=COMPAT,CLDR,SPI",
|
||||
"--add-modules java.activation",
|
||||
"--add-opens=jdk.management/com.sun.management.internal=ALL-UNNAMED",
|
||||
],
|
||||
"//conditions:default": [],
|
||||
})
|
||||
native.java_test(name = name,
|
||||
test_class = s_name,
|
||||
srcs = srcs + [":"+s_name],
|
||||
**kwargs)
|
||||
**dict(kwargs, jvm_flags=jvm_flags))
|
||||
|
||||
Reference in New Issue
Block a user