Bazel maven_jar规则的别名jar目标
我的工作区中有以下maven_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(
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_导入。