Bazel maven_jar规则的别名jar目标

Bazel maven_jar规则的别名jar目标,bazel,Bazel,我的工作区中有以下maven_jar: maven_jar( name = "com_google_code_findbugs_jsr305", artifact = "com.google.code.findbugs:jsr305:3.0.1", sha1 = "f7be08ec23c21485b9b5a1cf1654c2ec8c58168d", ) 在我的项目中,我通过@com\u google\u code\u findbugs\u jsr305//jar引用它。

我的工作区中有以下maven_jar:

maven_jar(
    name = "com_google_code_findbugs_jsr305",
    artifact = "com.google.code.findbugs:jsr305:3.0.1",
    sha1 = "f7be08ec23c21485b9b5a1cf1654c2ec8c58168d",
)
在我的项目中,我通过
@com\u google\u code\u findbugs\u jsr305//jar
引用它。但是,我现在想要依赖一个第三方库,它引用
@com\u google\u code\u findbugs\u jsr305
,而不使用jar目标

我尝试查看了
bind
alias
,但是
alias
不能在工作区内应用,而且
bind
似乎不允许您将目标定义为外部存储库


我可以重命名我使用的版本,这样它就不会冲突,但这感觉是错误的解决方案。

IIUC,您的代码需要同时依赖于
@com\u google\u code\u findbugs\u jsr305//jar
@com\u google\u code\u findbugs\u jsr305/:com\u google\u code\u findbugs\u jsr305
。不幸的是,没有任何预构建的规则为这两个目标生成构建文件,因此您基本上必须自己定义构建文件。幸运的是,@jart在你链接到的网站上为你写了大部分内容。您只需在添加以下内容后添加几行即可添加
//jar:jar

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
)目标。

IIUC,您的代码需要同时依赖于
@com\u google\u code\u findbugs\u jsr305//jar
@com\u google\u code\u findbugs\u jsr305
。不幸的是,没有任何预构建的规则为这两个目标生成构建文件,因此您基本上必须自己定义构建文件。幸运的是,@jart在你链接到的网站上为你写了大部分内容。您只需在添加以下内容后添加几行即可添加
//jar:jar

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
)目标。

供参考:第三方库规则中的规则类型和属性是什么?我可以依靠
@com\u google\u code\u findbugs\u jsr305//jar
来自
java\u library.deps
但不能依靠
@com\u google\u code\u findbugs\u jsr305
。我在最初的问题中没有提到,因为我希望找到问题的一般解决方案。这是rules\u closure()中的java\u import\u外部规则。它下载一个jar并将其公开为java_导入。供参考:第三方库规则中的规则类型和属性是什么?我可以依靠
@com\u google\u code\u findbugs\u jsr305//jar
来自
java\u library.deps
但不能依靠
@com\u google\u code\u findbugs\u jsr305
。我在最初的问题中没有提到,因为我希望找到问题的一般解决方案。这是rules\u closure()中的java\u import\u外部规则。它下载一个jar并将其公开为java_导入。