【发布时间】:2011-03-12 07:30:07
【问题描述】:
我在一个小团队(3 人)中工作,涉及多个模块(目前大约 10 个)。构建版本的编译、集成和管理变得越来越繁琐。 我正在寻找一个好的构建/集成工具来替换/完成 Ant。
这里是我们当前开发环境的描述: - 几个模块取决于每个第三方 JAR - 有些可能会导出 JARS,有些会导出 WARS,有些会导出独立的、可运行的 JARS(使用 Fat-Jar) - 所有这些的Javadoc - 我们与 Eclipse 合作 - 每个模块的自定义 Ant 脚本。 eclipse 配置和 Ant 脚本之间有很多冗余信息。例如,对于独立的 Fat-JAR,我们列出了所有递归依赖项,而理想情况下,它可以清楚地从 eclipse 配置中导入。 - 源代码使用SVN版本化
这是我想要一个完美的集成工具为我做的事情:
自动化模块的发布和版本控制。理想情况下,集成工具应该检测是否需要新版本。比如我要发布一个依赖于项目B的项目A,如果我在本地对项目B做了一些小改动,那么集成工具应该先发布一个新版本的B,并在A的基础上做它。
与eclipse强集成,使其可以从配置中获取模块和第三方库之间的依赖关系。顺便说一句,我想继续使用 eclipse 配置构建路径而不更新其他一些“.xml”内容。我看到Gradle可以从它的配置中生成eclipse项目文件,但是对应的就好了。
在本地项目上实现“实时”和透明的开发。我的意思是,在开发主要/“叶”项目时,我经常对核心/通用项目进行小改动。我希望我对核心项目的更改可以立即用于叶子项目,而无需发布(甚至在本地)我的核心项目的 JAR。
将我的模块的所有版本存储在外部服务器上。最简单的(共享文件夹/Webdav)将是最好的。一个包含模块列表和交付工件的漂亮网页也很棒。
我已经四处寻找了很多东西。从 Ant4eclipse(将 Eclipse 配置集成到我的 Ant 脚本中)到 Maven / Ivy / Gradle 工具。
我有点困惑。 这是我到目前为止所理解的: - Maven 是一个很棒/很大的工具,但有些死板,迫使你屈从于它的结构和概念。它基于描述而不是脚本。如果你走出这条路,你必须开发自己的插件。 - Ivy 不如 maven 强大,它处理的东西更少,但更灵活。 - Gradle 介于两者之间。它是通用的。它支持脚本以及“基于约定”的配置。它集成了 Ant 并对其进行了扩展。
所以在这一点上,我正在寻找来自真实用户的实际推荐。 你用什么工具?如何 ?你有和我一样的需求吗? 它是让您的生活轻松还是妨碍您?
是否有一些示例用例或工作区框架可供我用作起点,以了解这些工具的功能?
抱歉,这条消息太长了。 并提前感谢您的建议。
亲切的问候,
拉斐尔
【问题讨论】:
-
构建工具(如 Ant、Ant+Ivy、Gradle、Maven 2 等)或持续集成引擎(如 Hudson、CruiseControl、Bamboo、Teamcity 等)?构建工具并不是真正的 CI 工具(它们可用于实现基本的 CI 流程,但我不认为它们是 CI 工具)。你也许应该澄清一下。
-
是的,你是对的,我需要的不是持续集成,而是构建工具。我在标题中更改了它。
标签: java eclipse maven-2 ivy gradle