我有一个Java单元测试,它将使用机器学习模型文件,称之为model.bin
,它是由一个简单的文本文件通过外部工具构建的(称之为model-builder
,已经构建通过C ++规则)。虽然定义genrule
是有意义的,但在我的情况下它不支持deps
(model.bin
& model-builder
。我看到两个选择:
model.bin
文件。从概念上讲,这不是我想要测试的测试(我想测试阅读prebuild模型)。./model-builder --in my-input.txt --out
model.bin`。Bazel的最佳做法是什么?
答案 0 :(得分:2)
根据您的描述,我认为genoule是最好的路线。虽然genrule确实有deps,但听起来model.bin
是你生成的文件,并且作为out
有意义。 model-builder
看起来像是生成文件的工具,并且作为一个genoule tool
有意义。
这样的BUILD
文件应该有效。
genrule(
name = "model-bin",
srcs = ["//path/to:my-input.txt"],
outs = ["model.bin"],
tools = ["//path/to:model-builder"],
cmd = "$(location //path/to:model-builder) --in $< --out $@"
)