如何配置常春藤来解决htmlunit的依赖关系

时间:2013-02-28 17:11:19

标签: dependencies ivy htmlunit

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'

中找不到配置

1 个答案:

答案 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那样显而易见,那么我建议这应该在你的常春藤文件中明确声明。