Bar*_*lom 10 java log4j ivy dependency-management
我正在使用Apache Ivy + IvyDE获取项目的依赖项,它们是:
<dependency org="com.google.guava" name="guava" rev="r08" />
<!-- logging -->
<dependency org="org.slf4j" name="jcl-over-slf4j" rev="1.6.1" />
<dependency org="ch.qos.logback" name="logback-classic" rev="0.9.27" />
<!-- database -->
<dependency org="org.hibernate" name="hibernate-entitymanager" rev="3.6.2.Final" />
<dependency org="org.hibernate" name="hibernate-validator" rev="4.1.0.Final" />
<dependency org="org.hibernate" name="hibernate-c3p0" rev="3.6.2.Final" />
<dependency org="mysql" name="mysql-connector-java" rev="5.1.14" />
Run Code Online (Sandbox Code Playgroud)
源代码是Maven和JBoss(Hibernate)存储库.
正如您所看到的,我正在使用logback + SLF4J进行日志记录,但出于某种原因,Ivy也会下载log4j和slf4j-log4j,这会在我的应用程序中引起一些小问题.
有没有办法看到为什么会发生这种情况,看看上面哪个依赖项依赖于log4j?我可以从Ivy/IvyDE生成依赖图/树吗?
那么有没有办法防止这种情况发生?
Tho*_*mas 20
我们有一个蚂蚁目标,如下所示:
<target name="report" depends="init">
<mkdir dir="report" />
<!--
The type attribute is optional, we're using it to exlude other dependcy types we're not interested in.
Note that each resolve uses that list (via a property) in our build.
-->
<ivy:resolve type="jar,ejb,tld,bundle"/>
<ivy:report todir="report" />
</target>
Run Code Online (Sandbox Code Playgroud)
然后它只是一个调用ant report,Ivy将在给定目录中生成HTML报告.
看一下常春藤的常春藤文档:报告.
编辑:
要防止包含这些工件/依赖项,您可以尝试transitive="false"使用该<dependency ..>元素,或使用<exclude>.例如,我们使用Hibernate 3但不想拥有它JTA 1.1,因此我们将其包含ivy.xml在内:<exclude module="jta"/>排除所有传递JTA依赖项.