如何在Bazel中为Android项目添加Maven依赖项(例如Volley,Gson)?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Bazel中为Android项目添加Maven依赖项(例如Volley,Gson)?相关的知识,希望对你有一定的参考价值。
现在我这样做
deps = [
":tensorflow_native_libs",
"//tensorflow/contrib/lite/java:tensorflowlite",
"@androidsdk//com.android.support:appcompat-v7-25.0.0",
"@androidsdk//com.android.volley:volley:1.1.0",
"@androidsdk//com.google.code.gson:gson:2.6.2"
],
在android_binary
内。但是我收到了这个错误:
错误:/ home / abhi / Desktop / Git / SENA-28 / tensorflow / SenDetect / BUILD:24:1:// SenDetect:sendetect:无效标签'@androidsdk // com.android.volley:volley:1.1.0'在'android_binary'规则中属性'deps'的元素3中:无效的目标名称'volley:1.1.0':目标名称可能不包含':'
As of April 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文件中,您可以直接依赖Guava:
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",
],
)
As of May 2018:
gmaven_rules
和maven_jar
都被弃用了。请不要再使用它们了。
从docs.bazel.build的文档中,使用其他相关说明进行编辑:
在Maven Central Repository上托管的Maven依赖项
对于未托管在Google Maven上的Maven依赖项,请使用
maven_jar
存储库规则。例如,要使用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
之类的工具自动生成它们。
托管在Google Maven Repository上的Maven依赖项(https://maven.google.com)
对于Google's Maven repository上托管的依赖项,
@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()
然后,在BUILD文件的开头加载
gmaven_artifact
宏以使用它: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
将自动解析依赖关系。
以上是关于如何在Bazel中为Android项目添加Maven依赖项(例如Volley,Gson)?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 android 的选项菜单中为 chromecast 添加自定义投射按钮?