<ivy-module version="2.0">
<info organisation="com.travelclick" module="CoreWebServices" revision="4.1"/>
<configurations defaultconfmapping="default">
<conf name="runtime" visibility="public"/>
<conf name="default" visibility="public" extends="runtime"/>
</configurations>
<dependencies>
<dependency org="com.travelclick"
name="commons-all"
rev="4.1"
conf="default->default"/>
<dependency org="com.sun.messaging.mq"
name="jms"
rev="4.5.2"
conf="default->default"/>
<dependency org="org.jboss.common"
name="servlet-api"
rev="4.2"
conf="default->default"/>
<dependency org="com.fiorano"
name="framework"
rev="2.0"
conf="default->default"/>
<dependency org="com.fiorano"
name="fmq-client"
rev="9.3.0"
conf="default->default"/>
<dependency org="commons-codec"
name="commons-codec"
rev="1.3"
conf="default->default"/>
<dependency org="commons-httpclient"
name="commons-httpclient"
rev="3.1"
conf="default->default"/>
<dependency org="commons-lang"
name="commons-lang"
rev="2.2"
conf="default->default"/>
<dependency org="commons-pool"
name="commons-pool"
rev="1.4"
conf="default->default"/>
</dependencies>
</ivy-module>
请注意,所有依赖项都配置为default->default
。
在我的build.xml
中,我有以下声明:
<ivy:resolve conf="default"/>
<ivy:cachepath pathid="all.libs" conf="default"/>
注意我正在使用默认配置。
我使用all.libs
路径将库下载到我正在构建的战争中。
我在战争中得到以下库,这就是我想要的:
commons-all-4.1.jar
commons-codec-1.3.jar
commons-httpclient-3.1.jar
commons-lang-2.2.jar
commons-logging-1.0.4.jar
commons-pool-1.4.jar
fmq-client-9.3.0.jar
framework-2.0.jar
jms-4.5.2.jar
servlet-api-4.2.jar
现在,我将删除配置信息。这与删除ivy.xml
部分并删除所有<configurations>
的{{1}}相同:
conf=default->default
当然,我还必须更改<ivy-module version="2.0">
<info organisation="com.travelclick" module="CoreWebServices" revision="4.1"/>
<dependencies>
<dependency org="com.travelclick"
name="commons-all"
rev="4.1"/>
<dependency org="com.sun.messaging.mq"
name="jms"
rev="4.5.2"/>
<dependency org="org.jboss.common"
name="servlet-api"
rev="4.2"/>
<dependency org="com.fiorano"
name="framework"
rev="2.0"/>
<dependency org="com.fiorano"
name="fmq-client"
rev="9.3.0"/>
<dependency org="commons-codec"
name="commons-codec"
rev="1.3"/>
<dependency org="commons-httpclient"
name="commons-httpclient"
rev="3.1"/>
<dependency org="commons-lang"
name="commons-lang"
rev="2.2"/>
<dependency org="commons-pool"
name="commons-pool"
rev="1.4"/>
</dependencies>
</ivy-module>
以删除对默认配置的引用:
build.xml
但是,现在看看包含哪些内容:
<ivy:resolve/>
<ivy:cachepath pathid="all.libs"/>
为什么,当我将所有内容设置为默认时,只会下载实际的jar而不是源和javadoc jars 。然而,当我删除所有配置时,javadoc和源 jar 也被下载。
事实上,Maven存储库中各种jar的配置存储在哪里?我可以在Maven存储库中看到javadoc和source,但我没有看到任何关于各种配置的信息。常春藤如何知道是否包含来源和 javadoc 罐子?
答案 0 :(得分:3)
常春藤中没有标准默认configuration。每个常春藤文件都在conf
部分中定义了自己的一组<configuration> ..</configuration>
。
在第一个示例中,您定义了default
并将其映射到工件的default
配置。这些依赖项是maven工件,而常春藤将maven范围映射到default
(Ivy读取maven pom文件并在缓存中为其创建常春藤文件)。所以基本上你很幸运,default
conf存在于配置文件的常春藤文件中。
conf default
是一个映射的maven范围,在常春藤中不作为预定义的标准conf
存在。
在第二个示例中,您省略了conf="default->default"
,which is equivalent to conf="*->*"
,并且意味着:将依赖项中的所有内容映射到此conf
中常春藤文件。
This question answers how ivy maps maven scopes to ivy configurations
简而言之:
default
映射到maven范围默认值,它仅引用jar *
,它引用了所有可用的配置,因此引用了所有可用的maven工件。