如何让 Ivy 下载 Hibernate 而不是这两个?
Ivy 使用它所谓的“配置”来做到这一点。代表 Hibernate 的 ivy.xml 将需要提供不同的配置来代表 hibernate 的不同用例。 (显然,hibernate 的某些使用确实需要 jaas 和 jacc,但显然您没有使用这种情况。)
Here 是关于配置的文档。如果您想提供用于休眠的ivy.xml,我可以提供有关构建配置的指针,这些配置将删除您要删除的特定库。
如果我真的需要这些并从 Sun 下载了它们的 Jars,Ivy 会在我机器的哪个文件夹中查找它们?
ivy 查找 ivy 文件和工件的“目录”由您正在使用的解析器列表指定。解析器列表在 ivy 设置文件(通常命名为 ivysettings.xml)中指定。通常,这些不是本地目录,而是远程 URL。有;但是,可以使用本地文件解析器类型。
如果您这样做,您将需要提供 ivy 文件和工件(jar),每个文件的文件名都与解析器模式匹配。有关详细信息,请参阅文档。
这是一个来自 ivy 设置文件的本地文件解析器示例:
<filesystem name="myfiles" checkconsistency="false" checksums="" transactional="false">
<ivy pattern="/data/repo/[organisation]/[module]-[revision].ivy.xml"/>
<artifact pattern="/data/repo/[organisation]/[module]-[revision].[ext]"/>
</filesystem>
另外请注意,您需要将您的 ivy 任务指向正确的解析器。您可以使用 ant 任务的 resolver 属性或 ivy 设置文件中 settings 元素的 defaultResolver 属性来执行此操作。
Here 是关于解析器的文档。
编辑: OP 为他的特定原始问题找到了一种耗时较少的解决方法。依赖标签的“排除”子标签为他完成了这项工作:
<dependencies>
<dependency org="org.hibernate" name="hibernate-core" rev="3.3.1.GA" conf='..'>
<exclude name='jaas' />
<exclude name='jacc' />
</dependency>
</dependencies>