По состоянию на апрель 2019 года:
Обновление: rules_jvm_external
- это новый набор правил, разработанный командой Bazel для транзитивного извлечения и разрешения артефактов.
В этом случаефайл WORKSPACE будет содержать что-то вроде этого:
load("@rules_jvm_external//:defs.bzl", "maven_install")
maven_install(
artifacts = [
"com.android.volley:volley:1.1.0",
"com.google.code.gson:gson:2.6.2",
"com.android.support:design:27.0.2",
"com.android.support:support_annotations:jar:27.0.2",
],
repositories = [
"https://jcenter.bintray.com",
"https://maven.google.com",
]
)
Затем в файле BUILD вы можете напрямую зависеть от Volley и Gson следующим образом:
android_library(
name = "my_lib",
srcs = # ...
deps = [
"@maven//:com_android_volley_volley",
"@maven//:com_google_code_gson_gson",
"@maven//:com_android_support_design",
"@maven//:com_android_support_support_annotations",
],
)
По состоянию на май 2018 года:
И gmaven_rules
, и maven_jar
устарели.Пожалуйста, не используйте их больше.
Из документации docs.bazel.build , отредактированной с дополнительными соответствующими инструкциями:
Зависимости Maven, размещенные в Центральном репозитории Maven
Используйте правило хранилища maven_jar
для зависимостей Maven, не размещенных в Google Maven.Например, чтобы использовать Volley 1.1.0 и Gson 2.6.2, добавьте следующие строки в файл WORKSPACE
на верхнем уровне каталога проекта:
maven_jar(
name = "com_android_volley_volley",
artifact = "com.android.volley:volley:1.1.0",
)
maven_jar(
name = "com_google_code_gson",
artifact = "com.google.code.gson:gson:2.6.2",
)
Затем вы можете зависеть от нихв ваших BUILD
файлах:
android_library(
name = "my_app_lib",
srcs = [..],
deps = [
"@com_android_volley_volley//jar",
"@com_google_code_gson//jar",
],
)
Обратите внимание, что maven_jar
является не переходным, поэтому он не загружает зависимости указанного jar.Вам нужно будет вручную указать дополнительные правила maven_jar
для транзитивных зависимостей или использовать инструмент, подобный bazel-deps
, для их автоматического создания.
Зависимости Maven, размещенные в репозитории Google Maven (https://maven.google.com)
Для зависимостей, размещенных в Репозиторий Google Maven , @gmaven_rules
предоставляет простой способ извлечения зависимостей, размещенных в gmaven_artifact
, путем указания артефактакоординаты напрямую.
Чтобы использовать @gmaven_rules
, добавьте эти строки в файл WORKSPACE
:
# Google Maven Repository
GMAVEN_TAG = "20180513-1"
http_archive(
name = "gmaven_rules",
strip_prefix = "gmaven_rules-%s" % GMAVEN_TAG,
url = "https://github.com/bazelbuild/gmaven_rules/archive/%s.tar.gz" % GMAVEN_TAG,
)
load("@gmaven_rules//:gmaven.bzl", "gmaven_rules")
gmaven_rules()
Затем загрузите макрос gmaven_artifact
в начале файла BUILD виспользуйте его:
load("@gmaven_rules//:defs.bzl", "gmaven_artifact")
android_library(
name = "my_app_lib",
srcs = glob(["java/**/*.java"]),
deps = [
gmaven_artifact("com.android.support:design:aar:27.0.2"),
gmaven_artifact("com.android.support:support_annotations:jar:27.0.2"),
]
# ...
)
В отличие от maven_jar
, gmaven_artifact
является транзитивным, поэтому вам нужно только указать координату артефакта, а @gmaven_rules
разрешитзависимости автоматически.