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 属性到底有啥用