java - 以生产就绪方式执行 bazel-buildfarm,无需 "bazel run"

标签 java jar bazel

readme of Bazel-buildfarm说:

In general do not execute server binaries with bazel run, since bazel does not support running multiple targets.

这听起来像是 bazel run 是为本地测试目的而设计的,而不是为可以运行多个作业的生产服务器而设计的。 但我找不到显示如何运行 bazel 服务器的文档。 Older Dockerfiles运行 bazel build,然后使用 java 执行生成的 jar 文件。我在我的测试机上尝试了此操作并收到以下错误:

[vagrant@localhost bazel-buildfarm]$ java -Djava.util.logging.config.file=/config/logging.properties -jar bazel-bin/src/main/java/build/buildfarm/buildfarm-server.jar
no main manifest attribute, in bazel-bin/src/main/java/build/buildfarm/buildfarm-server.jar

之前的构建似乎有效:

[vagrant@localhost bazel-buildfarm]$ bazel build //src/main/java/build/buildfarm:buildfarm-server
Starting local Bazel server and connecting to it...
[...]
INFO: Analyzed target //src/main/java/build/buildfarm:buildfarm-server (94 packages loaded, 1623 targets configured).
INFO: Found 1 target...
INFO: Deleting stale sandbox base /home/vagrant/.cache/bazel/_bazel_vagrant/277990f61896f4bac21fb997fb976b70/sandbox
Target //src/main/java/build/buildfarm:buildfarm-server up-to-date:
  bazel-bin/src/main/java/build/buildfarm/buildfarm-server.jar
  bazel-bin/src/main/java/build/buildfarm/buildfarm-server
INFO: Elapsed time: 11.180s, Critical Path: 0.61s
INFO: 0 processes.
INFO: Build completed successfully, 1 total action

并且 jar 文件存在:

[vagrant@localhost bazel-buildfarm]$ l bazel-bin/src/main/java/build/buildfarm/buildfarm-server
-r-xr-xr-x. 1 vagrant vagrant 17K Nov 11 11:27 bazel-bin/src/main/java/build/buildfarm/buildfarm-server

我刚刚使用具有所有依赖项的 CentOS 存储库(gcc gcc-c++)安装了 bazel,并克隆了 bazel-buildfarm 的 git 存储库。与

bazel run //src/main/java/build/buildfarm:buildfarm-server $(pwd)/examples/server.config.example

服务器至少可以成功启动:

INFO: Analyzed target //src/main/java/build/buildfarm:buildfarm-server (0 packages loaded, 0 targets configured).
INFO: Found 1 target...
Target //src/main/java/build/buildfarm:buildfarm-server up-to-date:
  bazel-bin/src/main/java/build/buildfarm/buildfarm-server.jar
  bazel-bin/src/main/java/build/buildfarm/buildfarm-server
INFO: Elapsed time: 0.325s, Critical Path: 0.00s
INFO: 0 processes.
INFO: Build completed successfully, 1 total action
INFO: Build completed successfully, 1 total action
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Nov 12, 2019 3:08:13 PM build.buildfarm.server.BuildFarmServer <init>
INFO: buildfarm-server-c6735a2a-2c1b-473e-9d3e-14fe5d01c27d initialized

我做错了什么?或者还有另一种方法如何以生产就绪的方式运行 bazel?

平台:CentOS 7.7.1908,Vagrant 上带有 Bazel 1.1.0

最佳答案

虽然我不知道有关 buildfarm 的任何具体信息,但您可能在使用 Bazel 运行的目标及其参数之间缺少双破折号 (--)。你的命令行可能应该是这样的:

bazel run //src/main/java/build/buildfarm:buildfarm-server -- $(pwd)/examples/server.config.example

关于java - 以生产就绪方式执行 bazel-buildfarm,无需 "bazel run",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58823364/

相关文章:

java - 如何在 JavaFX 8 中创建自定义组件?

java - 为 MESH 端点执行 SPARQL 查询时出现问题

java - 我可以从 3 个目录深的 jar 中提取文件吗?

c++ - 为什么 Bazel 在重启或更改无线网络后重建?

Bazel 映射目录位于 `src` 到 `build` 之外

java - 在方法 average() 中操作方法 sum()

java - JfreeChart : changing axis line angle on polar chart

java - 使用 Java 将 PDF 转换为图像

即使已使用 javap 验证类路径和 .class 文件,Java 也找不到符号错误

c++ - bazel alwayslink = true 是什么意思?