在常春藤依赖中,
Q1。 和有什么区别
conf="运行时->编译"
对比
conf="运行时->编译(*)"
额外的括号通配符有什么作用?
Q2。
以下是做什么的?
conf="编译->编译(*)"
这不是周期性/自依赖吗?将 conf 映射回自身有什么意义?
在常春藤依赖中,
Q1。 和有什么区别
conf="运行时->编译"
对比
conf="运行时->编译(*)"
额外的括号通配符有什么作用?
Q2。
以下是做什么的?
conf="编译->编译(*)"
这不是周期性/自依赖吗?将 conf 映射回自身有什么意义?
括号是一个后备:
从 1.3 开始,当您不确定依赖项是否具有所需的配置时,可以使用回退机制。您可以向 ivy 表明您想要一种配置,但如果它不存在,请使用另一种配置。指定它的语法在所需的 conf 之后的括号之间添加了备用 conf。例如,
test->runtime(default)
意味着在test
模块的
runtime
配置中依赖的conf是必需的,但如果不存在,它将使用
default
conf代替。如果默认配置不存在,那么它将被视为错误。请注意,* 通配符可以用作后备配置。
对于问题 2:一个 conf 总是这样读:
ConfFromThisFile -> ConfFromDependency
所以
compile->compile
compile
会将依赖项的配置映射到compile
该文件的配置。它没有循环。括号说:如果compile
依赖项中不存在,则使用*
.
有关依赖关系,请参阅 ivy 文档的配置映射部分。
此语法用于依赖回退。runtime->compile
意味着运行时配置取决于编译配置。编译配置必须存在,否则 Ivy 会报错。但是,runtime->compile(*)
将首先尝试编译配置以满足依赖关系。但如果 compile 不存在,它将尝试所有其他配置。有关更多信息,请参阅Ivy 文档的配置映射部分。
基于此,compile->compile(*)
将表明编译需要任何(全部?)配置。我猜这compile->(*)
不是有效的语法,所以额外compile
保证使用回退,因为compile
直到配置 XML 节完成后才定义。
请注意,从文档中不清楚是(*)
指“任何”还是“所有”配置。所以,我不确定 Ivy 是否会在匹配所有依赖项(如果有的话)的第一个配置处停止,或者它是否会在联合中引入所有其他配置。