maven_jar 规则的别名 jar 目标
Aliasing jar target of maven_jar rule
我的工作区中有以下 maven_jar:
maven_jar(
name = "com_google_code_findbugs_jsr305",
artifact = "com.google.code.findbugs:jsr305:3.0.1",
sha1 = "f7be08ec23c21485b9b5a1cf1654c2ec8c58168d",
)
在我的项目中,我通过 @com_google_code_findbugs_jsr305//jar
引用了它。但是,我现在想依赖引用 @com_google_code_findbugs_jsr305
而没有 jar 目标的第三方库。
我尝试查看 bind
和 alias
,但是 alias
无法在 WORKSPACE 中应用,而且 bind
似乎不允许您定义目标作为外部存储库。
我可以重命名我使用的版本,这样它就不会冲突,但这感觉像是错误的解决方案。
IIUC,您的代码需要依赖于 @com_google_code_findbugs_jsr305//jar
和 @com_google_code_findbugs_jsr305//:com_google_code_findbugs_jsr305
。不幸的是,没有任何预建规则可以为这两个目标生成 BUILD 文件,因此您基本上必须自己定义 BUILD 文件。幸运的是,@jart 已经在 the closure rule you linked to. You just need to add //jar:jar
by appending a couple of lines, after line 69 中为您编写了大部分内容,添加如下内容:
repository_ctx.file(
'jar/BUILD',
"\n".join([
"package(default_visibility = '//visibility:public')"] + _make_java_import('jar', '//:com_google_code_findbugs_jsr305.jar')
这会在存储库中创建一个 //jar:jar
(或等效地,//jar
)目标。
我的工作区中有以下 maven_jar:
maven_jar(
name = "com_google_code_findbugs_jsr305",
artifact = "com.google.code.findbugs:jsr305:3.0.1",
sha1 = "f7be08ec23c21485b9b5a1cf1654c2ec8c58168d",
)
在我的项目中,我通过 @com_google_code_findbugs_jsr305//jar
引用了它。但是,我现在想依赖引用 @com_google_code_findbugs_jsr305
而没有 jar 目标的第三方库。
我尝试查看 bind
和 alias
,但是 alias
无法在 WORKSPACE 中应用,而且 bind
似乎不允许您定义目标作为外部存储库。
我可以重命名我使用的版本,这样它就不会冲突,但这感觉像是错误的解决方案。
IIUC,您的代码需要依赖于 @com_google_code_findbugs_jsr305//jar
和 @com_google_code_findbugs_jsr305//:com_google_code_findbugs_jsr305
。不幸的是,没有任何预建规则可以为这两个目标生成 BUILD 文件,因此您基本上必须自己定义 BUILD 文件。幸运的是,@jart 已经在 the closure rule you linked to. You just need to add //jar:jar
by appending a couple of lines, after line 69 中为您编写了大部分内容,添加如下内容:
repository_ctx.file(
'jar/BUILD',
"\n".join([
"package(default_visibility = '//visibility:public')"] + _make_java_import('jar', '//:com_google_code_findbugs_jsr305.jar')
这会在存储库中创建一个 //jar:jar
(或等效地,//jar
)目标。