在常春藤依赖中,
Q1。 有什么区别
CONF = “runtime->编译”
vs
CONF = “runtime->编译(*)”
额外的括号内的通配符有什么作用?
Q2。
以下是做什么的?
CONF = “&编译期GT;编译(*)”
这不是周期性/自我依赖吗?将conf映射回自身有什么意义?
答案 0 :(得分:3)
括号为fallback:
自1.3以来,当您不确定时,可以使用回退机制 依赖将具有所需的conf。你可以向常春藤表明 您想要一个配置,但如果它不存在,请使用另一个配置 一。指定此语法的语法会在其间添加后备conf 在所需的conf之后的括号。例如,
test->runtime(default)
表示在test
配置中 模块runtime
需要conf的conf,但如果没有 存在,它将使用
default
相反。如果默认conf没有 存在然后它将被视为一个错误。请注意 *通配符可用作后备conf。
问题2: conf总是像:
ConfFromThisFile -> ConfFromDependency
所以
compile->compile
会将依赖项的compile
配置映射到此文件的compile
配置。这不是循环。括号显示:如果依赖项中不存在compile
,请使用*
。
答案 1 :(得分:1)
此语法用于依赖性回退。 runtime->compile
表示运行时配置取决于编译配置。编译配置必须存在或Ivy将报告错误。但是,runtime->compile(*)
将首先尝试编译配置以满足依赖性。但是如果编译不存在,它将尝试所有其他配置。有关详细信息,请参阅Ivy docs的配置映射部分。
基于此,compile->compile(*)
表示编译需要任何(所有?)配置。我猜测compile->(*)
不是有效的语法,因此额外的compile
保证使用回退,因为直到配置XML节完成后才定义compile
。
请注意,文档中不清楚(*)
是否表示“任何”或“所有”配置。所以,我不确定Ivy是否会停止匹配所有依赖项的第一个配置(如果有的话),或者它是否会引入union中的所有其他配置。