ivy xml的依赖标签中的传递字段有啥用?

Posted

技术标签:

【中文标题】ivy xml的依赖标签中的传递字段有啥用?【英文标题】:What is the use of transitive field in ivy xml's dependency tag?ivy xml的依赖标签中的传递字段有什么用? 【发布时间】:2017-03-26 13:12:03 【问题描述】:

我已经尝试搜索它,但我没有找到任何令人满意的答案,所以我发布了这个问题。如果您有可以详细解释这一点的文档,请告诉我。

我的 ivy xml 中有这一行:

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

我不明白这个传递字段有什么用。我正在处理一个已经构建的项目,我不得不添加新的 jars。所以我遵循了与它已经存在的模式相同的模式。 我尝试删除这个“传递”字段,但我的项目中没有任何改变。然后我把它改成了真的。同样,没有变化。这是干什么用的? 这是它下载所有 3 的原因吗:任何特定 jar 的源代码、javadoc 和 jar?如果删除它不影响我的项目,是否可以从我的 ivy xml 中删除它?

apache 网站说:“true to resolve dependencies transitively, false else”这并没有消除我的疑虑。

【问题讨论】:

【参考方案1】:

在干净的工作区中尝试(还没有依赖项)。 此外,commons-lang3 可能不是一个很好的例子来了解 transtive 的作用,因为它本身不依赖于任何其他库。


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

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

在修订版 3.0 中声明对来自 foo 的模块 bar 的依赖。

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

【讨论】:

【参考方案2】:

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

【讨论】:

只有当你构建的配置没有设置全局传递值本身时,这才是正确的(参见传递ant.apache.org/ivy/history/2.5.0/ivyfile/conf.html)。如果是,则该值优先于依赖项的传递值。

以上是关于ivy xml的依赖标签中的传递字段有啥用?的主要内容,如果未能解决你的问题,请参考以下文章

HTML5 script 标签的 crossorigin 属性到底有啥用

html中th标签有啥用?

请问HTML标签中的<xx class>,class,有啥用啊?

<label>标签有啥用

html里面的表单value标签有啥用啊

有人可以解释 ivy.xml 依赖项的 conf 属性吗?