我有三个项目:A,B,C 和ant中的build.xml应该编译它们。
C取决于B取决于A
到目前为止,我所有的依赖项都在eclipse中,我在ant中有一个build.xml:
<eclipse.incrementalBuild project="A" kind="incremental"/>
<eclipse.incrementalBuild project="B" kind="incremental"/>
<eclipse.incrementalBuild project="C" kind="incremental"/>
现在,我有ivy.xml文件 - 例如:
<ivy>
<ivy module="B"/>
<dependencies>
<dependency name="A">
</dependencies>
</ivy>
现在,当我按顺序将A,B,C发布到存储库(我使用sonatype nexus存储库)时,所有工作都很棒,因为存储库也用于解析,因此该过程是: 1.解决A的依赖关系 - 没有这样的 2.将当前工作空间A作为jar上传到存储库 3.解析B的依赖关系 - A被解析为依赖关系 4.当前在工作区B中将jar作为jar上传到存储库 5.解决C - B和A的依赖关系被解析为依赖关系 6.当前在工作区C中上传为jar到存储库
我认为发布到nexus的方式是提供产品
我需要的是一个简单的build.xml来编译我的项目 - 所以我不想一直发布新版本。 相反,我正在寻找使用常春藤的方法 1.编译A. 2.然后使用已编译的A编译B. 2.然后使用已编译的B,A
编译C.我考虑过在文件系统中使用本地存储库,其中包含1-6个阶段 - 生成要使用的本地jar - 但是,这有点麻烦,因为: 1.我的决心必须包含两个解析器 - nexus repo之前的文件系统 - 这意味着在真正的发布时,我将不得不记得删除本地jar 对于我认为可能有更简单解决方案的事情,听起来有点太多了。
本质上,我想模仿eclipse的IVY插件,它可以解决工作空间中的依赖关系并使用工作区中的其他项目编译项目 - 但我正在寻找最佳,最推荐的方法。
谢谢
答案 0 :(得分:2)
你说:
我有三个项目:应该是ant中的A,B,C和build.xml 编译它们。
这表明您的项目实际上是一个庞大的整体构建。
相反,你需要模仿Maven的工作方式。每个模块都需要有自己的构建文件和列出该模块依赖项的常春藤文件。每个模块都将自己的jar工件发布到存储库(本地或远程),使其可以使用常春藤解析操作访问其他模块。
以下示例提供了使用常春藤进行多模块构建的常春藤文档的链接。
打破一个大项目并不容易,我希望这会有所帮助。