Ivy可以解决依赖关系的依赖关系,文档说可以使用模块配置告诉ivy配置依赖于依赖的给定配置。
我想在项目中使用htmlunit,在其sourceforge page依赖信息中,我发现依赖设置我将maven规范翻译为常春藤:
<dependency org="net.sourceforge.htmlunit" name="htmlunit" rev="2.11"/>
我写了一个测试,编译它,当试图运行它时,我有一个ClassNotFoundException,我又回到sourceforge,并寻找有关htmlunit的依赖关系的信息,在这个page我找到了我的样子因为我认为我需要的是使用模块配置的魔力,所以我补充说:
<dependency org="net.sourceforge.htmlunit" name="htmlunit" rev="2.11" conf="test->compile; test->test"/>
但我有这个错误告诉我在net.sourceforge.htmlunit#htmlunit; 2.11,'compile'
中找不到配置答案 0 :(得分:2)
编译配置确实存在....
尝试重现您的问题时,我发现了以下错误消息:
[ivy:resolve] ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:resolve] :: UNRESOLVED DEPENDENCIES ::
[ivy:resolve] ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:resolve] :: net.sourceforge.htmlunit#htmlunit;2.11:
configuration not public in net.sourceforge.htmlunit#htmlunit;2.11: 'test'......
当ivy将Maven模块转换为配置时,它会以不允许解决传递性测试依赖性的方式进行转换。
在所有测试依赖项旨在支持htmlunit模块的测试之后,这种推理有一些逻辑。您的模块应该明确声明自己的测试依赖项....
我通常建议将“测试”配置映射到远程“运行时”Maven范围,以便获取额外的罐子:
<dependency org="net.sourceforge.htmlunit"
name="htmlunit"
rev="2.11"
conf="compile->default;test->runtime"/>
问题是htmlunit模块中没有“运行时”依赖项,这意味着这不会有任何帮助。
总之,您没有说明缺少哪个班级。如果它像junit那样显而易见,那么我建议这应该在你的常春藤文件中明确声明。