当前位置 : 主页 > 手机开发 > 其它 >

让Ivy不要包含测试依赖项

来源:互联网 收集:自由互联 发布时间:2021-06-22
考虑如下的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时,它会获
考虑如下的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>
网友评论