gpt4 book ai didi

ivy - 防止 Ivy 包含测试依赖项

转载 作者:行者123 更新时间:2023-12-04 17:57:29 28 4
gpt4 key购买 nike

考虑如下 ivy.xml:

<ivy-module version="2.0">
<info organisation="com.foo" module="FooBar" />
<dependencies>
<dependency org="net.sf.ehcache" name="ehcache-core" rev="2.2.0" />
<!--...-->
</dependencies>
</info>
</ivy-module>

当我运行 Ivy 时,它会获取 EHCache 的所有依赖项,甚至测试依赖项。具体来说,它尝试引入 Hibernate 3.5.1(在 POM 文件中,它被列为“测试”依赖项)。

如何防止 Ivy 包含测试依赖项?我可以将它列为排除的依赖项,但我不想对每个测试依赖项都这样做。我是 Ivy 的新手,习惯了 Maven 做事的方式。我正在阅读有关配置的内容,但我不明白 Maven 的“范围”的这一方面如何映射到“配置”。

最佳答案

您需要定义依赖项的配置,例如:

<dependency org="net.sf.ehcache" name="ehcache-core" rev="2.2.0" conf="compile"/>

如果省略 conf,则假定您的意思是 conf ="*",它将下载该依赖项的所有配置。

这是一个简单的例子:

<configurations>
<conf name="test" visibility="public" />
<conf name="compile" visibility="public" />
</configurations>
<publications>
<artifact name="${project.name}" type="jar" conf="compile" ext="jar"/>
<artifact name="${project.name}-test" type="jar" conf="test" ext="jar"/>
</publications>
<dependencies>
<!-- COMPILE -->
<dependency org="log4j" name="log4j" rev="1.2.14" conf="compile->*"/>
<dependency org="apache" name="commons-net" rev="2.0" conf="compile->*"/>
<dependency org="itext" name="itext" rev="1.4.6" conf="compile->*"/>
<dependency org="jsch" name="jsch" rev="0.1.29" conf="test->*"/>
<!-- TEST -->
</dependencies>

在这个例子中,jsch 将包含在测试和编译配置中。

如果您稍后使用 conf ="compile"解决此依赖项,您将获得除 jsch 之外的所有依赖项。
如果您使用 conf ="test"解决此依赖项,您将只获得 jsch。

如果测试会扩展编译,你会得到所有的 jar 。

<configurations>
<conf name="test" visibility="public" extends="compile" />
<conf name="compile" visibility="public" />
</configurations>

关于ivy - 防止 Ivy 包含测试依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5640094/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com