【发布时间】:2012-07-17 15:52:21
【问题描述】:
<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"/>
注意我使用的是 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
现在,我将删除配置信息。这与删除了 <configurations> 部分并删除了所有 conf=default->default 的 ivy.xml 相同:
<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"/>
但是,现在看看包含了什么:
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
commons-httpclient-3.1-sources.jar
commons-codec-1.3-javadoc.jar
commons-codec-1.3-sources.jar
commons-lang-2.2-javadoc.jar
commons-lang-2.2-sources.jar
commons-pool-1.4-sources.jar
为什么,当我将所有内容都设置为 default 时,只下载了实际的 jar,而不是源代码和 javadoc jars。然而,当我删除所有配置时,javadoc 和源 jars 也下载了。
其实Maven仓库中各种jar的配置存放在哪里呢?我可以在 Maven 存储库中看到 javadoc 和源代码,但我没有看到任何关于各种配置 的信息。 Ivy 如何知道是否包含 sources 和 javadoc jar?
【问题讨论】:
-
在最后一段中提到 Maven 是一个迟来的惊喜。 Maven 是如何参与其中的?您上面的 Ivy 模块文件没有提到使用 Maven 存储库。您的 Ivy 设置文件是否包含此类配置?
-
@seh:Ivy 可以使用 Maven 存储库来获取 jar 和分发 jar。我使用Artifactory。其中一些罐子是公司拥有的罐子,不在标准的 Maven 存储库中。我将它们添加到我们的 Artifactory 存储库中。