IVY - 多项目本地构建 - 模拟"resolve dependencies in workspace"



我有三个项目:A,B,C并在 Ant 中构建.xml应该编译它们。

C 依赖于 B 依赖于 A

到目前为止,我所有的依赖项都在 eclipse 中,并且我有一个构建.xml在 ant 中具有:

<eclipse.incrementalBuild project="A" kind="incremental"/>
<eclipse.incrementalBuild project="B" kind="incremental"/>
<eclipse.incrementalBuild project="C" kind="incremental"/>

现在,我有常春藤.xml文件 - 例如:

<ivy>
   <ivy module="B"/>
   <dependencies>
       <dependency name="A">
   </dependencies>
</ivy>

现在,当我按此顺序将 A、B、C 发布到存储库(我使用 sonatype nexus 存储库(时,一切都很好,因为存储库也用于解析,因此过程是:1. 解决 A 的依赖关系 - 没有这样的2. 将当前在工作区 A 中的 jar 作为 jar 上传到存储库3. 解析 B 的依赖关系 - A 解析为依赖关系4. 将当前在工作区 B 中的 jar 作为 jar 上传到存储库5. 解析 C 的依赖关系 - B 和 A 解析为依赖关系6. 将当前在工作区 C 中作为 jar 上传到存储库

我认为它发布到nexus的方式是为了交付产品

我需要的是一个简单的构建.xml来编译我的项目 - 所以我不想一直发布新版本。相反,我正在寻找使用常春藤的方法1. 编译 A2. 然后使用已经编译的 A 编译 B2.然后使用已经编译好的B,A编译C

我想过在文件系统中使用本地存储库,其中制作了阶段 1-6 - 生成要使用的本地 jar - 但是,这有点麻烦,因为:1. 我的决心必须包含两个解析器 - nexus 存储库之前的文件系统 - 这意味着在真正的发布中,我必须记住删除本地 jar2.对于我认为可能有更简单的解决方案的人来说,这听起来有点太多了。

从本质上讲,我想模仿 eclipse 的 IVY 插件,它可以解决工作区中的依赖关系并使用工作区中的其他项目编译项目 - 但我正在寻找最好、最推荐的方法。

谢谢

你说:

我有三个项目:A、B、C 和 build.xml 在蚂蚁中应该 编译它们。

这表明您的项目实际上是一个大型的整体构建。

相反,您需要模仿Maven的工作方式。每个模块都需要有自己的构建文件和一个列出该模块依赖项的常春藤文件。每个模块将自己的 jar 工件发布到存储库(本地或远程(中,以便其他模块使用 ivy resolve 操作访问它。

以下示例提供了有关使用 ivy 构建多模块的 ivy 文档的链接。

  • 常春藤简单共享存储库
  • 常春藤:使用动态修订

拆分一个大项目并不容易,我希望这有所帮助。

相关内容

最新更新