規則
action_listener
查看規則來源action_listener(name, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, extra_actions, features, licenses, mnemonics, restricted_to, tags, target_compatible_with, testonly, visibility)
警告:額外動作已淘汰。請改用 aspects。
action_listener
規則本身不會產生任何輸出內容。相反地,它允許工具開發人員透過提供從動作到 extra_action
的對應,將 extra_action
插入建構系統。
這個規則的引數會將動作助憶法對應至 extra_action
規則。
指定 --experimental_action_listener=<label>
選項後,建構作業會使用指定的 action_listener
將 extra_action
插入建構圖中。
範例
action_listener( name = "index_all_languages", mnemonics = [ "Javac", "CppCompile", "Python", ], extra_actions = [":indexer"], ) action_listener( name = "index_java", mnemonics = ["Javac"], extra_actions = [":indexer"], ) extra_action( name = "indexer", tools = ["//my/tools:indexer"], cmd = "$(location //my/tools:indexer)" + "--extra_action_file=$(EXTRA_ACTION_FILE)", )
引數
屬性 | |
---|---|
name |
名稱 (必填) 這個目標的專屬名稱。 |
extra_actions
|
標籤清單 (必要) 這項action_listener 應將 extra_action 目標清單新增至建構圖表。例如:[ "//my/tools:analyzer" ] 。
|
mnemonics
|
字串清單;必填 這個action_listener 應監聽的動作助憶法清單,例如 [ "Javac" ] 。記憶法並非公開介面。我們無法保證助憶法和相關動作不會變更。 |
extra_action
查看規則來源extra_action(name, data, cmd, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, out_templates, requires_action_output, restricted_to, tags, target_compatible_with, testonly, toolchains, tools, visibility)
警告:已淘汰額外動作。請改用 aspects。
當 extra_action
規則指定為一般建構目標時,不會產生任何有意義的輸出內容。相反地,這樣做可讓工具開發人員將其他動作插入建構圖中,隱藏現有的動作。
如要進一步瞭解如何啟用 extra_action
,請參閱 action_listener
。
extra_action
會以指令列的形式執行。指令列工具會取得包含通訊協定緩衝區的檔案存取權,並以 $(EXTRA_ACTION_FILE) 的形式提供詳細資訊,說明該檔案所遮蔽的原始動作。此外,還能存取原始動作可存取的所有輸入檔案。如要進一步瞭解通訊協定緩衝區內儲存的資料,請參閱 extra_actions_base.proto。每個 proto 檔案都包含 ExtraActionInfo 訊息。
就像所有其他動作一樣,額外動作會處於沙箱狀態,因此應設計為處理這類情況。
引數
屬性 | |
---|---|
name |
名稱;必填 這個目標的專屬名稱。 您可以在 action_listener 規則的 extra_actions 引數中使用 label 參照此規則。
|
cmd
|
字串;必填 要執行的指令。與 genrule cmd 屬性相似,但有以下差異:
|
out_templates
|
字串清單;預設值為 extra_action 指令產生的檔案範本清單。範本可使用下列變數:
|
requires_action_output
|
布林值;預設值為 extra_action 要求原始動作的輸出內容必須做為此 extra_action 的輸入內容。如果為 True (預設為 False),extra_action 可假設原始動作輸出內容可做為輸入內容的一部分。 |
tools
|
標籤清單;預設為 tool 依附元件清單。詳情請參閱依附元件的定義。
建構系統會確保在執行 所有工具及其資料依附元件都會整合為單一樹狀結構,其中的指令可使用相對路徑。工作目錄會是該統合樹狀結構的根。 |