允許建置提供規則,修改所依賴的軟體組件的元數據。組件元數據規則應用於建置腳本的依賴區塊 DependencyHandler
的 components 區段。 規則可以透過兩種不同的方式定義
- 當規則應用於 components 區段時,直接作為一個動作
- 作為一個獨立的類別,實作
ComponentMetadataRule
介面
範例展示了從我們的依賴項中移除某些傳遞依賴項的基本方法。
plugins { id 'java' } repositories { mavenCentral() } dependencies { components { withModule("jaxen:jaxen") { allVariants { withDependencies { removeAll { it.group in ["dom4j", "jdom", "xerces", "maven-plugins", "xml-apis", "xom"] } } } } } implementation("jaxen:jaxen:1.1.3") }
方法 | 描述 |
all(rule) | 新增一個規則閉包,可以修改任何已解析的軟體組件的元數據。 |
all(rule) | 新增一個基於類別的規則,可以修改任何已解析的軟體組件的元數據。 |
all(rule, configureAction) | 新增一個基於類別的規則,可以修改任何已解析的軟體組件的元數據。規則本身由提供的 configure action 進行配置。 |
all(ruleSource) | 新增一個規則,可以修改任何已解析的軟體組件的元數據。 |
all(rule) | 新增一個規則動作,可以修改任何已解析的軟體組件的元數據。 |
withModule(id, rule) | 新增一個規則,可以修改屬於指定模組的任何已解析的軟體組件的元數據。 |
withModule(id, rule) | 新增一個基於類別的規則,可以修改屬於指定模組的任何已解析的軟體組件的元數據。 |
withModule(id, rule, configureAction) | 新增一個基於類別的規則,可以修改屬於指定模組的任何已解析的軟體組件的元數據。 |
withModule(id, ruleSource) | 新增一個規則,可以修改屬於指定模組的任何已解析的軟體組件的元數據。 |
withModule(id, rule) | 新增一個規則,可以修改屬於指定模組的任何已解析的軟體組件的元數據。 |
ComponentMetadataHandler
all
(Closure
<?>
rule)
Closure
<?>新增一個規則閉包,可以修改任何已解析的軟體組件的元數據。
提供的規則閉包必須宣告 ComponentMetadataDetails
作為它的第一個參數,允許修改組件元數據。
此外,規則可以宣告額外的(唯讀)參數,這些參數可以提供關於組件的額外詳細資訊。這些額外參數的順序並不重要。
支援以下額外參數類型
IvyModuleDescriptor
- 額外的 Ivy 特定元數據。宣告此參數的規則只會針對封裝為 Ivy 模組的組件調用。PomModuleDescriptor
- 額外的 Maven 特定元數據。宣告此參數的規則只會針對封裝為 POM 模組的組件調用。
ComponentMetadataHandler
all
(Class
<? extends ComponentMetadataRule
>
rule)
Class
<? extends ComponentMetadataRule
>新增一個基於類別的規則,可以修改任何已解析的軟體組件的元數據。
ComponentMetadataHandler
all
(Class
<? extends ComponentMetadataRule
>
rule, Action
<? super ActionConfiguration
>
configureAction)
Class
<? extends ComponentMetadataRule
>Action
<? super ActionConfiguration
>新增一個基於類別的規則,可以修改任何已解析的軟體組件的元數據。規則本身由提供的 configure action 進行配置。
ComponentMetadataHandler
all
(Object
ruleSource)
新增一個規則,可以修改任何已解析的軟體組件的元數據。
ruleSource 是一個物件,其中有一個使用 Mutate
註解的規則方法。
這個規則方法
- 必須返回 void。
- 必須將
ComponentMetadataDetails
作為第一個參數。 - 可以有一個額外的參數,類型為
IvyModuleDescriptor
或PomModuleDescriptor
。
ComponentMetadataHandler
all
(Action
<? super ComponentMetadataDetails
>
rule)
Action
<? super ComponentMetadataDetails
>新增一個規則動作,可以修改任何已解析的軟體組件的元數據。
ComponentMetadataHandler
withModule
(Object
id, Closure
<?>
rule)
Closure
<?>新增一個規則,可以修改屬於指定模組的任何已解析的軟體組件的元數據。
規則閉包參數與 ComponentMetadataHandler.all(groovy.lang.Closure)
的要求相同。
ComponentMetadataHandler
withModule
(Object
id, Class
<? extends ComponentMetadataRule
>
rule)
Class
<? extends ComponentMetadataRule
>新增一個基於類別的規則,可以修改屬於指定模組的任何已解析的軟體組件的元數據。
ComponentMetadataHandler
withModule
(Object
id, Class
<? extends ComponentMetadataRule
>
rule, Action
<? super ActionConfiguration
>
configureAction)
Class
<? extends ComponentMetadataRule
>Action
<? super ActionConfiguration
>新增一個基於類別的規則,可以修改屬於指定模組的任何已解析的軟體組件的元數據。
ComponentMetadataHandler
withModule
(Object
id, Object
ruleSource)
新增一個規則,可以修改屬於指定模組的任何已解析的軟體組件的元數據。
規則來源參數與 ComponentMetadataHandler.all(java.lang.Object)
的要求相同。
ComponentMetadataHandler
withModule
(Object
id, Action
<? super ComponentMetadataDetails
>
rule)
Action
<? super ComponentMetadataDetails
>新增一個規則,可以修改屬於指定模組的任何已解析的軟體組件的元數據。