我在一个小团队(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 并对其进行了扩展。
所以在这一点上,我正在寻找来自真实用户的实际推荐。你用什么工具?如何 ?你有和我一样的需求吗?它是让你的生活变得轻松还是妨碍你?
是否有一些示例用例或工作区框架可供我用作起点来了解这些工具的功能?
很抱歉这条消息的长度。并提前感谢您的建议。
亲切的问候,
拉斐尔