1
作爲我們努力創建bazel-maven轉換互操作工具(從更細粒度的bazel罐子創建maven尺寸罐子)的一部分,我們需要aspect
在bazel build
上運行訪問目標的java_common.provider
以便從中取出罐子和小火雞。Can Bazel方面可以訪問當前目標的java_common.provider
這可能嗎?
作爲我們努力創建bazel-maven轉換互操作工具(從更細粒度的bazel罐子創建maven尺寸罐子)的一部分,我們需要aspect
在bazel build
上運行訪問目標的java_common.provider
以便從中取出罐子和小火雞。Can Bazel方面可以訪問當前目標的java_common.provider
這可能嗎?
簡短的回答是肯定的,這是可能的。
您可以使用java_common
模塊進行方面實現,其方式與您在規則實現中使用的方式相同。
從文檔上java_common.provider:
java_common.provider.compile_jars
和java_common.provider.transitive_compile_time_jars
是指在編譯時java_common.provider.transitive_runtime_jars
使用ijars是指在運行時使用的全部罐子。在編譯時的完整罐尚不可用,但有人正在努力揭露此功能。 (問題#3528在GitHub上。)
確保你也閱讀博客文章對這個話題:https://blog.bazel.build/2017/03/07/java-sandwich.html
這真是個好消息!具體如何訪問提供商?我無法在'ctx.rule.attr'和'target'中找到它... – Natan
在'ctx.rule.attr.deps'下找到它: 'for dep in ctx.rule.attr.deps : 如果java_common.provider在dep:' – Natan
好,那麼'java_common.provider'可以從'target'訪問嗎?我需要知道當前目標的java輸出是什麼,而不是依賴... – Natan