在Bazel中,可以通过--java_toolchain
参数设置Java编译工具链,然后通过--javacopts
参数来传递对Java编译的更多控制选项。在这种情况下,可以使用-A
选项来传递注解处理器参数。
假设注解处理器的名称为MyAnnotationProcessor
,模式导出目录为/path/to/schema/export/directory
,可以使用以下Bazel构建规则:
java_library(
name = "my_library",
srcs = ["MyClass.java"],
deps = [...],
annotations = [
"@com_google_auto_value_auto_value//:auto-value",
"//path/to/my/annotation:my_annotation",
],
exports = [
"//path/to/schema/export/directory",
],
visibility = ["//visibility:public"],
)
java_plugin(
name = "my_annotation_processor",
processor_class = "com.example.MyAnnotationProcessor",
deps = [
"//some/dependency:foo",
],
)
java_binary(
name = "my_binary",
srcs = ["Main.java"],
deps = [
"//:my_library",
],
main_class = "com.example.Main",
java_toolchain = "@bazel_tools//tools/jdk:current_java_toolchain",
args = [
"-processor",
"MyAnnotationProcessor",
"-Aroom.export_dir=/path/to/schema/export/directory",
# Other javac options can be passed here as well
],
)
以上构建规则中的-Aroom.export_dir=/path/to/schema/export/directory
即为设置注解处理器参数的选项,其中room.export_dir
为Room数据库库的注解参数。
在这个示例中,MyAnnotationProcessor
的process()
方法将检查指定目录/path/to/schema/export/directory
以导出架构文件。