在ivy xml的依赖标记中使用传递字段有什么用?

时间:2016-11-12 12:04:33

标签: xml ivy

我试过搜索但是我没有找到任何满意的答案,所以我发布了这个问题。如果你有一个可以详细解释这个问题的文档,请告诉我。

我的常春藤xml中有这一行:

<dependency org="org.apache.commons" name="commons-lang3" rev="3.3.2" transitive="false" />

我不明白这个传递领域是什么。我正在开发一个已经构建的项目,我不得不添加新的jar。所以我遵循了它已经存在的相同模式。 我尝试删除这个“传递”字段,我的项目中没有任何内容发生变化。然后我把它改成了真的。再一次,没有变化。这是用来做什么的? 这就是它为任何特定的jar下载所有3:source,javadoc和jar的原因吗?如果删除它不会影响我的项目,可以从我的常春藤xml中删除此字段吗?

apache网站说:“真实地解决了依赖性的传递,否则就是错误的”,这并不能解决我的怀疑。

2 个答案:

答案 0 :(得分:2)

在干净的工作区中尝试(没有依赖关系)。 另外,commons-lang3可能不是查看transtive做什么的好例子,因为它本身并不依赖于任何其他库。

来自official documentExample部分(突出显示我的):

<dependency org="foo" name="bar" revision="3.0" transitive="false" conf="default->@;runtime,test->runtime"/> 

在版本3.0中声明foo对模块bar的依赖关系。

由于bar的设置,transitive的依赖关系本身不会包含

答案 1 :(得分:1)

set transitive =“true”以传递方式解析此依赖关系,否则返回false。 默认值为true。 <dependency org="org.hibernate" name="hibernate-core" rev="3.3.1.GA" transitive="true" /> 对于上面的依赖ivy下载所有依赖的“hibernate-core”jar作为传递设置为“true”。如果它是假的,常春藤不会下载这些依赖项。