首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于项目构建的Ant/Ivy

用于项目构建的Ant/Ivy
EN

Stack Overflow用户
提问于 2011-12-20 20:42:56
回答 1查看 923关注 0票数 6

我正在考虑将我管理的一个Maven项目切换到Apache-Ant/Ivy。我需要对构建过程进行更多的控制,我对Maven感到非常沮丧。请不要评论Maven有多棒。我的问题是关于艾薇的。

我想建立一个“标准”的Ant构建模板,以后只需最少的修改就可以用于其他项目。

我将建立一个中央“企业”存储库,我们可以在其中放置公共Maven存储库中没有的第三方库(例如,商业库、Sun库、专有库等)。此企业存储库将在我们的本地LAN上可用,但可能无法从办公室外访问。

每个开发人员在~/.ivy/repository中都有一个私有的存储库。我希望Ant构建能够使用企业存储库中经过更改的库版本自动更新这个私有存储库。

~/.ivy/ant中,我计划使用Ant1.8中的include任务,将“标准”模块包含在单独的项目build.xml文件中。这些模块将为不同的Scala和Clojure版本提供不同版本的ScalaClojure编译目标(例如:scala-compile-2.9.1.xmlclojure-compile-1.3.xml等)。构建模块将在企业存储库中可用,并且如果它们发生更改,则应在私有存储库中自动更新。

每个项目都将遵循标准的Maven目录结构:${project}/src/main/java${project}/target/classes等。

在过去,我尝试使用Ivy,但是Ant构建文件变得非常大(模板构建文件超过500行)并且难以管理/编辑。我希望通过将标准目标放在它们自己的构建模块中的~/.ivy/ant目录中,可以避免代码膨胀。

这可以做到吗?我是不是太离谱了?我在Ivy上能找到的唯一文档是Apache网站(http://ant.apache.org/ivy)。有没有其他可用的文档,包括书籍?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-23 02:02:20

将模板构建文件划分为可包含的帮助文件是相当明智的想法。就我个人而言,现在我正在将一个非常大的项目从ant (根本没有依赖项管理--只从ftp复制文件)切换到ant/ivy解决方案。所以我这样做了-我有一个带有里程碑目标的文件-即准备编译,编译,准备归档,等等。我想你已经明白了。我已经配置了所有这些目标的依赖关系(就ant而言,依赖关系,不要误会我的意思)。在这种方式下,编译依赖于准备编译,准备编译依赖于初始化的smth,如下所示。这个目标没有body --它们包含在你的多模块项目的每个模块的每个构建文件中。这个目标的唯一目的是维护构建状态,因为有了这个导入的东西,事情变得相当棘手,很难知道哪个目标被覆盖了,以及这个目标什么时候会运行。但是有了这个文件,我可以很容易地在每个合理的里程碑上更改vy构建的状态。我想在一个模块中用exteran exe编译帮助文件。没问题--在这个项目中,我只是这样做的--准备归档取决于编译帮助的目标。当这个里程碑目标被包括在内时-我只能覆盖其中的一些-所有其他的都会预置期望的构建项目的方式。

我的策略的另一个部分-混入构建文件-用于每个特定的区域。我有一份给艾薇的文件。在那里我放了初始化,解析,发布等等。当我想使用ivy时,我只需要包含这个文件,并通过我的里程碑目标来管理依赖关系。如果构建是典型的-我只包含这个文件,并且具有约定优先于配置的功能。都是开箱即用的。怎么做?只是和其他的混音器结合。Mixins可能会包含其他依赖于它们的mixins。因此,每个混入都是我构建策略中可重用的一部分。来自OOP - single-concerned单元的东西。在您的示例中,它是scala混入,具有特定于scala的目标。

然后我有了委托子项目公共构建活动的delegate.xml。我有dist,all,test和任何你想要的多模块项目。构建顺序使用ant-ivy任务buildlist进行评估。

还有一些其他的文件--但这些是战略性的基本文件,帮助我在这个非常保守的大型项目中拥有一个可重用和可维护的构建。所以,如果你对细节感兴趣,请不要害羞,请联系我。我很乐意帮助你,因为常春藤的文档是非常复杂和不完整的。

编辑:关于书籍- Ant in Action可能会对你有所帮助,我从这本书中获得了几个想法,我强烈推荐每个人阅读它。在那里你也可以找到常春藤的东西。关于常春藤医生-对不起,这是唯一可用的。但是当我被这个麻烦的ivy+ant困扰时,我发现了一些关于私人博客的有趣的文章。所以..。这可能会以某种方式填补这一空白。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8575613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档