【发布时间】:2013-07-10 02:15:06
【问题描述】:
我有一个多模块 ant+ivy 项目。项目之间的依赖关系记录在 ivy.xml 文件中。
当<ivy:retrieve> 被调用时,它将尝试下载所有依赖项,包括本地项目。
如何从检索中排除我的本地项目?
或者也许可以使用文件系统解析器,使其解析为${projects.dir}/*/ivy.xml,就像 IvyDE 使用工作区解析器所做的那样。
更新
我想仅 排除本地项目,但仍要检索它们的传递依赖项。 我需要在 eclipse 之外复制 IvyDE 工作区解析器的行为。
示例
给定项目结构:
- 项目/
- local.module1/
- bin/
- lib/
- build.xml
- ivy.xml
<dependency org="local" name="local.module2" />
- local.module2/
- bin/
- lib/
- build.xml
- ivy.xml
<dependency org="external" name="library1" />
- common.xml
- build.xml
- local.module1/
我希望local.module1 能够检索除本地项目 (local.module2) 之外的所有传递依赖项(local.module2、external.library1),因此有效地留下了external.library1。
据此,我想构建包含对本地项目的直接引用和对外部库的 jar 引用的构建类路径。在模块1的情况下:
- ../local.module2/bin
- lib/external.library1-1.0.jar
如果有人想知道为什么 - 我正在尝试以最小的更改将 ivy 融入现有的构建系统。
【问题讨论】:
-
David W. answer 将解决提出的问题....但我想知道您的问题是否更深一些...以防万一,我建议了解 ivy 的控制配置机制依赖组。如果本地生成的构建工件是“本地”配置的一部分,那么将它们分开是微不足道的(常春藤检索任务支持配置)。总之,配置起初令人困惑,但功能强大。
-
我尝试将本地项目移动到不同的配置,但它完全排除了它们的传递依赖关系。
-
如果没有具体的例子很难评论......
-
我添加了一个例子。
-
多模块构建并不有趣(在 ANT 或 Maven 中)......在深入研究之前,每个模块是否将其 jar 发布到存储库中?请参阅以下内容以获得解释(和 doco 链接):stackoverflow.com/questions/4106143/…