Bazel-skylark操作能否读取命令行标志(strict_java_deps)
我正在为scala规则实现类似于Bazel-skylark操作能否读取命令行标志(strict_java_deps),bazel,Bazel,我正在为scala规则实现类似于strictJavaDeps的特性。 如果使用warn或error,我希望能够在运行时进行配置 我似乎记得skylark规则无法创建和访问命令行标志,但我不记得它们是否可以访问现有的标志 主要区别在于,现有的标记已经被解析,因此可能也会在某些ctx中传递。您想要的标记(strict\u java\u deps)目前无法通过Skylark获得。但是,我们没有理由不能将其添加到跟踪中 对于其他标志,上下文可以访问配置片段,配置片段可以访问一些已解析的命令行标志。我认为
strictJavaDeps
的特性。如果使用
warn
或error
,我希望能够在运行时进行配置
我似乎记得skylark规则无法创建和访问命令行标志,但我不记得它们是否可以访问现有的标志
主要区别在于,现有的标记已经被解析,因此可能也会在某些ctx中传递。您想要的标记(strict\u java\u deps
)目前无法通过Skylark获得。但是,我们没有理由不能将其添加到跟踪中
对于其他标志,上下文可以访问配置片段,配置片段可以访问一些已解析的命令行标志。我认为您需要的是,然后使用获取,然后从中获取默认的_javac_标志:
# rules.bzl
def _impl(ctx):
print("flags: %s" % ctx.fragments.java.default_javac_flags)
...
frag = rule(
implementation = _impl,
fragments = ["java"], # Declare that this rule uses java fragments
)
然后:
谢谢我要找的标志是
strict\u java\u deps
。我认为这个解决方案对我没有帮助,因为该片段被标记为SkylarkCallable
,而strict\u java\u deps
被标记为选项。我说的对吗?哦,是的,你现在不能访问那个,但我们没有理由不暴露它。存档,谢谢!你能更新你的答案吗?我将接受它,然后编辑以添加错误。
$ bazel build --javacopt="-g:source,lines" :x
WARNING: /home/kchodorow/test/a/tester.bzl:2:3: flags: ["-g:source,lines"].