Bazel Skylark-一个规则可以从其标签访问另一个规则的属性吗?
这个问题是背负的。然而,我在另一个方面遇到了这个问题 上下文 在Bazel中,有两个存储库规则:maven_jar和maven_服务器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_
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
我不能为maven规则说话(我不使用它们)。但我认为你想要的概念是。这允许规则从其依赖项获取信息。不幸的是,存储库“规则”更像宏,并且没有提供程序。