| # Copyright 2023 The Bazel Authors. All rights reserved. |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| """A templated BUILD file for Java repositories.""" |
| |
| JDK_BUILD_TEMPLATE = """load("@rules_java//java:defs.bzl", "java_runtime") |
| |
| package(default_visibility = ["//visibility:public"]) |
| |
| exports_files(["WORKSPACE", "BUILD.bazel"]) |
| |
| filegroup( |
| name = "jre", |
| srcs = glob( |
| [ |
| "jre/bin/**", |
| "jre/lib/**", |
| ], |
| allow_empty = True, |
| # In some configurations, Java browser plugin is considered harmful and |
| # common antivirus software blocks access to npjp2.dll interfering with Bazel, |
| # so do not include it in JRE on Windows. |
| exclude = ["jre/bin/plugin2/**"], |
| ), |
| ) |
| |
| filegroup( |
| name = "jdk-bin", |
| srcs = glob( |
| ["bin/**"], |
| # The JDK on Windows sometimes contains a directory called |
| # "%systemroot%", which is not a valid label. |
| exclude = ["**/*%*/**"], |
| ), |
| ) |
| |
| # This folder holds security policies. |
| filegroup( |
| name = "jdk-conf", |
| srcs = glob( |
| ["conf/**"], |
| allow_empty = True, |
| ), |
| ) |
| |
| filegroup( |
| name = "jdk-include", |
| srcs = glob( |
| ["include/**"], |
| allow_empty = True, |
| ), |
| ) |
| |
| filegroup( |
| name = "jdk-lib", |
| srcs = glob( |
| ["lib/**", "release"], |
| allow_empty = True, |
| exclude = [ |
| "lib/missioncontrol/**", |
| "lib/visualvm/**", |
| ], |
| ), |
| ) |
| |
| java_runtime( |
| name = "jdk", |
| srcs = [ |
| ":jdk-bin", |
| ":jdk-conf", |
| ":jdk-include", |
| ":jdk-lib", |
| ":jre", |
| ], |
| # Provide the 'java` binary explicitly so that the correct path is used by |
| # Bazel even when the host platform differs from the execution platform. |
| # Exactly one of the two globs will be empty depending on the host platform. |
| # When --incompatible_disallow_empty_glob is enabled, each individual empty |
| # glob will fail without allow_empty = True, even if the overall result is |
| # non-empty. |
| java = glob(["bin/java.exe", "bin/java"], allow_empty = True)[0], |
| version = {RUNTIME_VERSION}, |
| ) |
| |
| filegroup( |
| name = "jdk-jmods", |
| srcs = glob( |
| ["jmods/**"], |
| allow_empty = True, |
| ), |
| ) |
| |
| java_runtime( |
| name = "jdk-with-jmods", |
| srcs = [ |
| ":jdk-bin", |
| ":jdk-conf", |
| ":jdk-include", |
| ":jdk-lib", |
| ":jdk-jmods", |
| ":jre", |
| ], |
| java = glob(["bin/java.exe", "bin/java"], allow_empty = True)[0], |
| version = {RUNTIME_VERSION}, |
| ) |
| """ |