首页 > 解决方案 > Java 二进制文件的版本控制

问题描述

我希望自动将版本号附加到 Bazel 构建的 Java 二进制文件中。使用以下代码,我只能hello-world.jar在运行时生成文件bazel build //:hello-world

java_binary(
    name = "hello-world",
    srcs = glob(["src/main/java/com/bmuschko/**/*.java"]),
    main_class = "com.bmuschko.HelloWorld"
)

我想要生成的是一种定义版本的方法,例如 1.2.3,它将自动生成hello-world-1.2.3.jar类似于 Maven 或 Gradle 等其他构建工具的文件。如issue-1291所示,此功能似乎不是 Bazel 中的内置功能。

实现所描述的用例的惯用方式是什么?

标签: javabazel

解决方案


当前在 Bazel 中重命名文件的惯用方法是使用简单的 genrule:

VERSION = "1.2.3"

genrule(
    name = "versioned_hello_world",
    srcs = [":hello-world.jar"],
    outs = [":hello-world-%s.jar" % VERSION],
    cmd = "cp $< $@",
)

构建、运行$ bazel build :versioned_hello_world$ bazel build :hello-world-1.2.3.jar.


推荐阅读