[英]Ivy dependency conf map wildcard
在常春藤依賴中,
Q1。 有什么區別
CONF = “runtime->編譯”
VS
CONF = “runtime->編譯(*)”
額外的括號內的通配符有什么作用?
Q2。
以下是做什么的?
CONF = “編譯期>編譯(*)”
這不是周期性/自我依賴嗎? 將conf映射回自身有什么意義?
括號是后備 :
從1.3開始,當您不確定依賴項是否具有所需的conf時,可以使用回退機制。 您可以向常春藤指出您想要一個配置,但如果它不存在,請使用另一個配置。 指定此語法的語法會在所需的conf之后添加后綴括號。 例如,
test->runtime(default)
意味着在模塊的test
配置中
runtime
需要conf的conf,但如果不存在,它將使用
default
相反。 如果默認conf不存在,那么它將被視為錯誤。 請注意,*通配符可用作后備conf。
問題2:conf總是如下:
ConfFromThisFile -> ConfFromDependency
所以
compile->compile
會在地圖compile
依賴的配置在compile
這個文件的配置。 這不是循環。 括號說:如果依賴項中不存在compile
,則使用*
。
此語法用於依賴性回退。 runtime->compile
意味着運行時配置依賴於編譯配置。 編譯配置必須存在或Ivy將報告錯誤。 但是, runtime->compile(*)
將首先嘗試編譯配置以滿足依賴性。 但是如果編譯不存在,它將嘗試所有其他配置。 有關詳細信息,請參閱常春藤文檔的配置映射部分。
基於此, compile->compile(*)
將指示編譯需要任何(所有?)配置。 我猜測compile->(*)
是無效的語法,因此額外的compile
保證使用回退,因為直到配置XML節完成之后才定義compile
。
請注意,文檔中不清楚if (*)
表示“任何”或“所有”配置。 所以,我不確定Ivy是否會停止匹配所有依賴項的第一個配置(如果有的話),或者它是否會引入union中的所有其他配置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.