如何解决避免Ivy包含测试依赖项
| 考虑如下的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文件中被列为\“ test \”依赖项)。
如何防止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>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。