我正在寻找一个好的构建/集成工具来替换/完成Ant.
以下是我们当前开发环境的描述:
– 几个模块取决于每个第三方JAR
– 有些可能导出JARS,一些导出WARS,一些导出独立,可运行的JARS(使用Fat-Jar)
– 所有人的Javadoc
– 我们使用eclipse
– 每个模块的自定义Ant脚本. eclipse配置和Ant脚本之间的许多冗余信息.例如,对于独立的Fat-JAR,我们列出了所有的递归依赖关系,而理想情况下,它可以清楚地从eclipse配置中导入.
– 源代码使用SVN进行版本控制
以下是我想要的完美集成工具:
>自动化模块的发布和版本控制.理想情况下,集成工具应检测是否需要新版本.例如,如果我想要发布依赖于项目B的项目A,并且如果我在本地对项目B进行了小的更改,那么集成工具应该首先发布新版本的B并根据它.
>与eclipse强烈集成,以便它可以从其配置中获取模块和第三方库之间的依赖关系.顺便说一下,我想继续用eclipse配置构建路径而不更新其他一些“.xml”的东西.我看到Gradle可以从其配置生成eclipse项目文件,但对应的将是很好的.
>在本地项目上启用“实时”和透明的开发.我的意思是我经常在开发主要/“叶子”项目时对核心/公共项目进行小的更改.我希望我对核心项目的更改立即可用于项目,而无需发布(甚至本地)我的核心项目的JAR.
>将我的模块的所有版本存储在外部服务器上.最简单的(共享文件夹/ Webdav)将是最好的.一个包含模块列表和交付工件的漂亮网页也很棒.
我环顾四周寻找很多东西.从Ant4eclipse(将Eclipse配置集成到我的Ant脚本中)到Maven / Ivy / Gradle工具.
我有点困惑.
这是我到目前为止所理解的:
– Maven是一个伟大的/大工具,但有点僵硬,迫使你屈服于它的结构和概念.它基于描述而不是脚本.如果你走出这条道路,你必须开发自己的插件.
– 常春藤不如maven强大,它处理的东西少,但更灵活.
– Gradle介于两者之间.这是通用的.它支持脚本以及“基于约定”的配置.它集成了Ant并扩展了它.
所以在这一点上,我正在寻找真实用户的实际推荐.
你用什么工具?怎么样 ?你有和我一样的需求吗?
它是否会缓解您的生活或妨碍您的生活?
是否有一些用例或工作区框架的示例,我可以将其作为起点来查看这些工具的功能?
对不起这封邮件的长度.
并提前感谢您的建议.
亲切的问候,
拉斐尔
解决方法
Automatize the releases and versioning of modules (…)
版本控制和存储库的概念是内置的Maven,它们可以适用于此处.
Maven支持SNAPSHOT dependencies.使用快照时,Maven将在您运行构建时定期尝试从存储库下载最新的可用快照. SNAPSHOT通常在项目处于活动开发阶段时使用.
Maven 2还支持version ranges(我不推荐它们,但这是另一个故事),例如,允许配置A依赖于B的版本[4.0,)(任何大于或等于4.0的版本).如果您构建并发布新版本的B,A将使用它.
Integrate strongly with eclipse
Enable a “live” and transparent development on local projects.
m2eclipse插件支持“工作空间分辨率”:如果项目A依赖于项目B,如果项目B在工作空间中,您可以配置A依赖于B源而不是B.jar(如果我不是,则这是默认模式错误).因此,B源的更改将直接可见,而无需构建B.jar.
Store all versions of the releases of my module on an external server.
如前所述,这实际上是Maven的核心概念(您甚至没有选择),并且通过file://或dav://进行部署都受支持.
总而言之,Maven(可能)不是唯一的候选人,但我确信它适合:
>你的项目不是那么奇特或复杂,你的描述没有什么可怕的(可能需要对结构进行一些重构,但这不应该是一个大问题).
> Maven还带来了基于最佳实践的工作流程.
> m2eclipse提供与IDE的强大集成.
但Maven有一些学习曲线.