Как использовать Room Database в Android с Bazel? - PullRequest
0 голосов
/ 20 мая 2019

У меня много таблиц SQLite, с которыми теперь сложно работать на стороне приложения из-за нескольких классов DAO. Я использую Bazel в качестве системы сборки, но не могу понять, как использовать Room DB с системой сборки Bazel.

1 Ответ

0 голосов
/ 20 мая 2019

Если вы используете распознаватель артефактов Maven, например rules_jvm_external , он будет выглядеть примерно так.

В своем файле WORKSPACE добавьте зависимость от компилятора Room:

load("@rules_jvm_external//:specs.bzl", "maven")

maven_install(
    name = "maven",
    artifacts = [
        "androidx.room:room-runtime:2.1.0-alpha04",
        "androidx.room:room-compiler:2.1.0-alpha04",
        maven.artifact("com.google.auto", "auto-common", "0.10", neverlink = True),
        # .. other artifacts
    ],
    repositories = [
        "https://maven.google.com",
        "https://jcenter.bintray.com",
    ],
)

В файле BUILD (например, <project root>/BUILD) создайте цель java_plugin дляпредоставьте процессор аннотаций для Room:

java_plugin(
    name = "androidx_room_room_compiler_plugin",
    processor_class = "androidx.room.RoomProcessor",
    deps = ["@maven//:androidx_room_room_compiler"],
)

java_library(
    name = "androidx_room_room_compiler_library",
    exports = [
        "@maven//:androidx_room_room_compiler",
    ],
    exported_plugins = [
        ":androidx_room_room_compiler_plugin"
    ],
)

Наконец, в файле BUILD вашего приложения, зависит от компилятора Room и времени выполнения:

android_library(
    name = "lib_prod",
    # ...
    deps = [
        "@maven//:androidx_room_room_runtime",
        "//:androidx_room_room_compiler_library",
    ],
)
...