java - 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 中的内置功能。
实现所描述的用例的惯用方式是什么?
解决方案
当前在 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
.
推荐阅读
- floating-point - 如何标准化两个 IEEE754 单精度数之和?
- node.js - Nodejs express bodyParser 丢弃对象键
- javascript - 如何使用jQuery动态获取输入值?
- php - 尽管注册时使用了相同的散列方法,但我的登录密码不匹配
- pickle - #Python3 pickle:TypeError: __init__() got an unexpected keyword argument 'encoding'
- vue.js - 为什么我的 Babel-Loader 不能将我的供应商代码转换为对 IE8+ 有效?
- android - 适用于 Android 的 Unity Native C++ 插件
- bash - 使用 at 命令的邮件
- api - JHipster 中的外部 API 支持
- python - 检查/验证 Django 模板中是否有小数位实数,如果为零,则四舍五入