我正在努力弄清楚常春藤大学的排外行为。
在下面的常春藤文件中,为什么将commons-logging放在log4j之前会从log4j中引入javax.activation和javax.mail,而将其放在后面则不会。
<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>发布于 2013-09-05 04:13:49
激活和邮件jars是commons日志记录的依赖项,但是您已经将它们排除在log4j依赖项之外……
当您只使用单个配置时,这将向ivy发送一条混合消息,是否应该排除它们?下面的内容将更加明确:
<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_deps log4j_deps依赖项相关联
https://stackoverflow.com/questions/18615134
复制相似问题