Skip to content

Commit 8dbd040

Browse files
authored
Merge pull request #160 from mattmoor/jvm-flags
Make java_image respect jvm_flags
2 parents 28d492b + 4eeb746 commit 8dbd040

File tree

3 files changed

+23
-5
lines changed

3 files changed

+23
-5
lines changed

docker/build_test.sh

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -783,6 +783,12 @@ function test_cc_image() {
783783
/app/docker/testdata/cc_image.binary'
784784
}
785785

786+
function join_by() {
787+
local IFS="$1"
788+
shift
789+
echo "$*"
790+
}
791+
786792
function test_java_image() {
787793
# Don't check the full layer set because the base will vary,
788794
# but check the files in our top two layers.
@@ -813,6 +819,16 @@ function test_java_image() {
813819
./app/io_bazel_rules_docker/docker/testdata/java_image.binary
814820
./app/io_bazel_rules_docker/docker/testdata/java_image.binary.jar
815821
./app/io_bazel_rules_docker/docker/testdata/java_image.classpath'
822+
823+
class_path=$(join_by : \
824+
"/app/io_bazel_rules_docker/docker/testdata/libjava_image_library.jar" \
825+
"/app/io_bazel_rules_docker/../com_google_guava_guava/jar/guava-18.0.jar" \
826+
"/app/io_bazel_rules_docker/docker/testdata/java_image.binary.jar" \
827+
"/app/io_bazel_rules_docker/docker/testdata/java_image.binary")
828+
829+
check_entrypoint "java_image" \
830+
"${bin_layer}" \
831+
"[\"/usr/bin/java\", \"-cp\", \"${class_path}\", \"-XX:MaxPermSize=128M\", \"examples.images.Binary\"]"
816832
}
817833

818834
function test_war_image() {

docker/contrib/java/image.bzl

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -117,8 +117,7 @@ def _jar_app_layer_impl(ctx):
117117
'-cp',
118118
# Support optionally passing the classpath as a file.
119119
'@' + classpath_path if ctx.attr._classpath_as_file else classpath,
120-
ctx.attr.main_class
121-
]
120+
] + ctx.attr.jvm_flags + [ctx.attr.main_class]
122121

123122
file_map = {
124123
layer_file_path(ctx, f): f
@@ -141,6 +140,7 @@ _jar_app_layer = rule(
141140
# The rest of the dependencies.
142141
"deps": attr.label_list(),
143142
"runtime_deps": attr.label_list(),
143+
"jvm_flags": attr.string_list(),
144144
# The base image on which to overlay the dependency layers.
145145
"base": attr.label(mandatory = True),
146146
# The main class to invoke on startup.
@@ -161,7 +161,8 @@ _jar_app_layer = rule(
161161
)
162162

163163
def java_image(name, base=None, main_class=None,
164-
deps=[], runtime_deps=[], layers=[], **kwargs):
164+
deps=[], runtime_deps=[], layers=[], jvm_flags=[],
165+
**kwargs):
165166
"""Builds a Docker image overlaying the java_binary.
166167
167168
Args:
@@ -177,7 +178,7 @@ def java_image(name, base=None, main_class=None,
177178
# not allowed to pass deps (even []) if there is no srcs
178179
# kwarg.
179180
deps=(deps + layers) or None, runtime_deps=runtime_deps,
180-
**kwargs)
181+
jvm_flags=jvm_flags, **kwargs)
181182

182183
index = 0
183184
base = base or "@java_image_base//image"
@@ -188,7 +189,7 @@ def java_image(name, base=None, main_class=None,
188189
index += 1
189190

190191
_jar_app_layer(name=name, base=base, binary=binary_name,
191-
main_class=main_class,
192+
main_class=main_class, jvm_flags=jvm_flags,
192193
deps=deps, runtime_deps=runtime_deps, layers=layers)
193194

194195
def _war_dep_layer_impl(ctx):

docker/testdata/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -489,6 +489,7 @@ java_library(
489489
java_image(
490490
name = "java_image",
491491
srcs = ["Binary.java"],
492+
jvm_flags = ["-XX:MaxPermSize=128M"],
492493
layers = [":java_image_library"],
493494
main_class = "examples.images.Binary",
494495
)

0 commit comments

Comments
 (0)