Bazel 编译 java 代码为独立运行的 jar 包的方法
以buildfarm v2.10.2 https://github.com/bazelbuild/bazel-buildfarm 为例。
根目录下存在BUILD
文件,定义了构建规则。
1 |
|
java_binary
规则分别指定了buildfarm-server
和buildfarm-shard-worker
两个可运行程序。其中的main_class
指定了main函数所在的位置。
但是,如果直接运行构建指令,如
bazel build //src/main/java/build/buildfarm:buildfarm-shard-worker
然后运行,会报错:
1 |
|
提示找不到主类,查看编译后的jar包,发现没有指定主类:
1 |
|
要想运行这样构建后的产物,需要通过bazel run指令。
而想要构建出能独立运行的软件包,需要在构建指令的二进制包后加上后缀**_deploy.jar**
,这是一个约定。
1 |
|
参考:https://www.cnblogs.com/rongfengliang/p/12249593.html
附:手动编译jar包
1 |
|
Bazel 编译 java 代码为独立运行的 jar 包的方法
https://buttering.github.io/EasyBlog/2024/08/12/Bazel 编译 java 代码为独立运行的 jar 包的方法/