Bazel Skylark-一个规则可以从其标签访问另一个规则的属性吗?

Bazel Skylark-一个规则可以从其标签访问另一个规则的属性吗?,bazel,Bazel,这个问题是背负的。然而,我在另一个方面遇到了这个问题 上下文 在Bazel中,有两个存储库规则:maven_jar和maven_服务器 maven_jar(name, artifact, repository, server, sha1) maven_server(name, repository, settings) maven_jar规则的服务器属性是指向某个maven_服务器目标的标签 目前,只要提供了server属性,maven_jar规则就会排除错误 我想完成的事情 在maven_

这个问题是背负的。然而,我在另一个方面遇到了这个问题

上下文 在Bazel中,有两个存储库规则:maven_jar和maven_服务器

maven_jar(name, artifact, repository, server, sha1)

maven_server(name, repository, settings)
maven_jar规则的服务器属性是指向某个maven_服务器目标的标签

目前,只要提供了server属性,maven_jar规则就会排除错误

我想完成的事情 在maven_jar的实现函数中,我想访问maven_服务器的属性。具体而言,我想做以下几点:

def _impl(rtx):
     settings_attr = rtx.attr.server.getSettings()

     # alternatively
     settings_attr = rtx.attr.server.getAttributes().settings
是否支持此行为?如果没有,我可以用什么方法来估算吗?


服务器属性是一个标签,因此我不确定是否可以使用其提供程序/特性获取这些值。

存储库规则是宏,因此它们不像“正常”规则那样具有提供程序。因此,如果指定标签属性,它基本上必须是源文件

由于settings.xml不应该是特定于项目的,因此我认为
maven_jar
使用用户/系统的settings.xml更有意义,如下所述:

settings.xml文件可能位于两个位置:

  • Maven安装:${Maven.home}/conf/settings.xml
  • 用户安装:${user.home}/.m2/settings.xml
以前的settings.xml也称为 全局设置,后者settings.xml称为user 设置。如果这两个文件都存在,则它们的内容将合并为 用户特定的settings.xml占主导地位


我不能为maven规则说话(我不使用它们)。但我认为你想要的概念是。这允许规则从其依赖项获取信息。不幸的是,存储库“规则”更像宏,并且没有提供程序。