这个问题背负着this github issue。但是,我在另一个上下文中遇到过这个问题。
在Bazel中,有两个存储库规则,maven_jar和maven_server。
maven_jar(name, artifact, repository, server, sha1)
maven_server(name, repository, settings)
maven_jar规则的server属性是指向某个maven_server目标的标签。
目前,无论何时提供服务器属性,maven_jar规则都会出错。
在maven_jar的实现函数中,我想访问maven_server的属性。具体来说,我想做的事情是:
def _impl(rtx):
settings_attr = rtx.attr.server.getSettings()
# alternatively
settings_attr = rtx.attr.server.getAttributes().settings
是否支持此行为?如果没有,我可以用任何方式估算它吗?
服务器属性是一个标签,所以我不确定是否可以使用其提供者/方面获取这些值。
答案 0 :(得分:2)
存储库规则是宏,因此它们没有相同的提供商"正常"规则。因此,如果指定label属性,它基本上必须是源文件。
由于settings.xml不是特定于项目的,我认为maven_jar
使用用户/系统的settings.xml更有意义,如Maven docs:
settings.xml文件可能存在两个位置:
- Maven安装:$ {maven.home} /conf/settings.xml
- 用户的安装:$ {user.home} /.m2 / settings.xml
也调用以前的settings.xml 全局设置,后面的settings.xml称为user 设置。如果两个文件都存在,那么它们的内容将被合并 用户特定的settings.xml占主导地位。