订购常春藤依赖项

时间:2013-09-04 13:25:27

标签: ivy

我正在努力了解常春藤排除的确切行为。

在下面的常春藤文件中,为什么在commons-logging之前log4jjavax.activation引入javax.maillog4j而从<ivy-module version="2.0"> <info organisation="test" module="test" /> <configurations defaultconfmapping="default->runtime(*)" /> <dependencies> <dependency org="log4j" name="log4j" rev="1.2.15"> <exclude org="javax.activation" /> <exclude org="javax.mail" /> </dependency> <dependency org="commons-logging" name="commons-logging" rev="1.1" /> <exclude org="com.sun.jdmk" /> <exclude org="com.sun.jmx" /> <exclude org="javax.jms" /> </dependencies> </ivy-module> 引入{{1}}。

{{1}}

1 个答案:

答案 0 :(得分:4)

激活和邮件jar是公共日志记录的依赖项,但是你已经将它们排除在log4j依赖项之外......

当你只使用一个配置时,如果它们被排除在外,它会向常春藤发送混合信息吗?以下内容将更明确:

<dependencies>
    <dependency org="log4j" name="log4j" rev="1.2.15"/>
    <dependency org="commons-logging" name="commons-logging" rev="1.1" />

    <exclude org="javax.activation" />
    <exclude org="javax.mail" />    
    <exclude org="com.sun.jdmk" />
    <exclude org="com.sun.jmx" />
    <exclude org="javax.jms" />
</dependencies>

当全局设置排除时,它不那么令人困惑。

如果要将依赖项解析分开,那么您需要设置多个配置(将这些配置视为依赖集):

<ivy-module version="2.0">
    <info organisation="test" module="test" />

    <configurations>
       <conf name="log4j_deps" description="log4j dependencies"/>
       <conf name="commons_deps" description="commons-logging dependencies"/>
    </configurations>

    <dependencies>

        <dependency org="log4j" name="log4j" rev="1.2.15" conf="log4j_deps->runtime">
            <exclude org="javax.activation" />
            <exclude org="javax.mail" />
        </dependency>

        <dependency org="commons-logging" name="commons-logging" rev="1.1" conf="commons_deps->runtime"/>

        <exclude org="com.sun.jdmk" />
        <exclude org="com.sun.jmx" />
        <exclude org="javax.jms" />
    </dependencies>
</ivy-module>

切换依赖关系标签现在无效,因为依赖关系解析是显式的。

  • Log4j及其依赖项与 log4j_deps 配置相关联
  • 公共依赖项被置于 commons_deps 配置。
相关问题