Bazel的java_binary规则集成了许多打包、编译和运行Java二进制文件的功能,包括一些默认的依赖项,例如_deploy.jar文件。这可能导致二进制文件过大并难以维护,尤其是在有大量依赖文件的情况下。
为了解决这个问题,可以采取一种有效的方法,即“Split dependencies from _deploy.jar”。这样可以将生成的二进制文件和其依赖项分离,从而提高处理速度并降低文件大小。具体的方法如下:
# BUILD file
java_binary(
name = "my_binary",
srcs = glob(["src/**/*.java"]),
main_class = "com.example.MyClass",
runtime_deps = [
"//path/to:dependency1",
"//path/to:dependency2",
# other dependencies
],
deploy_manifest_lines = [
"Class-Path: dependency1.jar dependency2.jar",
# other dependencies
],
deploy_exclude = [
"**/*.properties",
"**/*.xml",
# other excluded files
],
)
在这个例子中,我们使用了deploy_manifest_lines参数,将所有的依赖项(除了本地的和不需要部署的)都列在一个清单文件中。这些依赖项可以被Bazel自动包含在生成的二进制文件中。在deploy_exclude参数中,我们可以指定不需要部署的文件和文件夹,以便减小生成的_deploy.jar文件的大小。
通过采用这种方法,可以有效地将二进制文件和其依赖项分离开来,从而提高生成速度和减小文件大小。