我一直在寻找和玩弄最近的新项目的IVY。我知道有关这个主题的两个阵营以及人们选择其中一个的很多理由。这个问题并没有集中在那个问题上。
我感兴趣的是当我使用IVY说使用Maven 2存储库获取Spring Frame时,我得到一个Ton of Jar文件,然后找到正确版本的问题,我必须排除项目等。现在,如果我关闭Poms然后我只得到弹簧框架罐,一切正常。
有没有理由通过使用POM来交付如此多的Jar文件 - 如果您使用纯Maven解决方案,是否会出现相同数量的Jar文件?
@Pascal_Thivent 这是对我的意思的更新。
这是我得到的输出:
[ivy:retrieve] ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:retrieve] :: UNRESOLVED DEPENDENCIES ::
[ivy:retrieve] ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:retrieve] :: javax.ejb#ejb;3.0: not found
[ivy:retrieve] :: com.oracle#toplink-essentials;2.41: not found
[ivy:retrieve] :: com.oracle#oc4j;1.0: not found
[ivy:retrieve] :: jexcelapi#jxl;2.6.6: not found
[ivy:retrieve] ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:retrieve]
[ivy:retrieve] ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:retrieve] :: FAILED DOWNLOADS ::
[ivy:retrieve] :: ^ see resolution messages for details ^ ::
[ivy:retrieve] ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:retrieve] :: javax.faces#jsf-api;1.1!jsf-api.jar
[ivy:retrieve] :: com.bea.wlplatform#commonj-twm;1.1!commonj-twm.jar
[ivy:retrieve] :: com.oracle.toplink#toplink;10.1.3!toplink.jar
[ivy:retrieve] :: com.sun.jdmk#jmxtools;1.2.1!jmxtools.jar
[ivy:retrieve] :: com.sun.jmx#jmxri;1.2.1!jmxri.jar
[ivy:retrieve] ::::::::::::::::::::::::::::::::::::::::::::::
这是我的ivy.xml
<dependencies>
<dependency org="jstl" name="jstl" rev="1.1.2"/>
<dependency org="commons-logging" name="commons-logging" rev="1.1.1" >
<exclude org="com.sun.jdmk"/>
<exclude org="com.sun.jmx"/>
<exclude org="javax.jms"/>
</dependency>
<dependency org="commons-lang" name="commons-lang" rev="2.5">
<exclude org="com.sun.jdmk"/>
<exclude org="com.sun.jmx"/>
<exclude org="javax.jms"/>
</dependency>
<dependency org="org.springframework" name="spring" rev="2.5.6"/>
<dependency org="org.springframework" name="spring-webmvc" rev="2.5.6"/>
</dependencies>
这是我的常春藤设置
<ivysettings>
<settings defaultResolver="myChain" />
<resolvers>
<url name="com.springsource.repository.bundles.release">
<ivy pattern="http://repository.springsource.com/ivy/bundles/release/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
<artifact pattern="http://repository.springsource.com/ivy/bundles/release/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
</url>
<url name="com.springsource.repository.bundles.external">
<ivy pattern="http://repository.springsource.com/ivy/bundles/external/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
<artifact pattern="http://repository.springsource.com/ivy/bundles/external/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
</url>
<chain name="myChain">
<resolver ref="com.springsource.repository.bundles.release" />
<resolver ref="com.springsource.repository.bundles.external"/>
<ibiblio name="jboss" m2compatible="true" root="http://repository.jboss.org/maven2" checkconsistency="false"/>
<ibiblio name="libraries" m2compatible="true" checkconsistency="false"/>
<ibiblio name="ilibraries-mirror" m2compatible="true" root="http://mirrors.ibiblio.org/pub/mirrors/maven2/" checkconsistency="false"/>
<ibiblio name="sun" m2compatible="true" root="http://download.java.net/maven/2/" checkconsistency="false"/>
</chain>
</resolvers>
答案 0 :(得分:3)
这是一个黑暗的镜头(我不知道“关闭POM”意味着什么)但我的猜测是你实际上得到transitive dependencies(这是简化但是,如果A依赖于B并且如果你声明对A的依赖,那么你也会得到B)。
这是使用Maven依赖项及其元数据(POM)和依赖管理解决方案(如Maven或Ivy)时获得的功能之一。这是Maven的默认行为,无法禁用(有关于此的元问题,MNG-1977)。使用Ivy,it looks like it's possible,例如:
<dependencies>
<dependency org="org.hibernate" name="hibernate-core"
rev="3.3.1.GA" conf='..'
transitive="false" />
</dependencies>
这是你的意思吗?