Maven 2 使用Ivy、Maven和POMs的问题
最近,为了一个新项目,我一直在看常春藤,和它玩耍。我知道在这个话题上有两个阵营,人们选择其中一个的原因很多。这个问题的重点不是这个 我感兴趣的是,当我使用IVY说使用Maven 2存储库获取Spring框架时,我得到了大量的Jar文件,然后在找到正确的版本时出现了问题,我必须排除项目等。现在,如果我关闭Poms,那么我只获得Spring框架Jar,一切正常 有没有一个原因可以解释为什么这么多的Jar文件都是通过POM交付的?如果使用纯Maven解决方案,这些Jar文件的数量是否相同Maven 2 使用Ivy、Maven和POMs的问题,maven-2,ant,ivy,dependency-management,Maven 2,Ant,Ivy,Dependency Management,最近,为了一个新项目,我一直在看常春藤,和它玩耍。我知道在这个话题上有两个阵营,人们选择其中一个的原因很多。这个问题的重点不是这个 我感兴趣的是,当我使用IVY说使用Maven 2存储库获取Spring框架时,我得到了大量的Jar文件,然后在找到正确的版本时出现了问题,我必须排除项目等。现在,如果我关闭Poms,那么我只获得Spring框架Jar,一切正常 有没有一个原因可以解释为什么这么多的Jar文件都是通过POM交付的?如果使用纯Maven解决方案,这些Jar文件的数量是否相同 @帕斯卡·
@帕斯卡·蒂文特 这里是我的意思的更新 这是我得到的输出:
[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>
这有点像是瞎猜(我不知道“关闭POMs”是什么意思),但我猜你实际上得到了(这是简化的,但是,如果a依赖于B,如果你声明依赖于a,你也会得到B) 这是使用Maven依赖项及其元数据(POM)和Maven或Ivy等依赖项管理解决方案时获得的特性之一。这是Maven的默认行为,不能禁用(这有一个元问题,)。使用常春藤,例如:
这就是你的意思吗
另见
- 依赖机制简介
- Maven:完整的参考资料
<dependencies>
<dependency org="org.hibernate" name="hibernate-core"
rev="3.3.1.GA" conf='..'
transitive="false" />
</dependencies>