从Maven 2/3迁移到Gradle

我一直在研究Gradle,看起来很有趣。 我认为能够使用除XML以外的其他语言编写脚本非常酷,而且我不清楚polyglot Maven POM文件是否仍然是一个可行的select。

我正在开发一个使用Maven 2.2.1作为构build工具的项目。 这个项目:

  • 是多模块的
  • 使用(也是我们自己的)插件
  • 依赖Artifactory代理库

有没有从Maven到Gradle的迁移经验? 陷阱,痛点,angular落案件? 任何经验都是非常受欢迎的。

从Maven到Gradle的迁移并不像从Ant到Maven那样简单(至less目前是这样)。 您可以轻松地重用Ant脚本,并使其成为Gradle构build中的一等公民。 Gradle路线图上还有一个任务,用于深入导入Maven构build 。

到目前为止,我将两个企业Maven构build迁移到了Gradle。 他们都是使用标准Maven插件的多模块项目。 我基本上重写了构buildGradle的方式,至less需要一些关于Gradle的知识。 基于我的经验,你可以很容易地得到在Gradle中运行的相同的构build。 Gradle并没有真正把你放在这里,而且相当灵活。 一路上,你可能会发现自己不得不编写一个自定义的插件,这个插件根据你使用的Maven插件而不存在。 然而,那里已经有很多插件了。 到目前为止,我还没有遇到一个真正的障碍。 即使Gradle文档相当不错,您可能会发现自己正在阅读大量的Gradle论坛post,以find解决您的问题之一。 一些标准的Maven特性并不支持开箱即用,例如provided范围或WAR就地 。 不过,这里有简单的方法。 我没有使用Artifactory存储库。 我处理的是Nexus存储库。 据我所知,Gradle家伙虽然对Artifactory有很好的支持。 编辑: JFrog提供了一个Artifactory Gradle插件 。

开始的一个好方法是使用Maven2Gradle迁移工具,它可以让您从Maven构build生成一个Gradle脚本。 就我个人而言,我还没有使用它。 我开发了与Maven构build并行的Gradle构build,没有造成任何麻烦。 Maven将其产量置于target之下,Gradle正在build 。 确保你准备你的团队的变化。 让他们尝试Gradle构build并熟悉该工具。

一旦完全迁移,您将对构build的可维护性和可扩展性感到非常高兴。 添加自定义构build逻辑非常简单,您将不胜感激您离开了XML-land。 在performance方面,你也不会退后一步。 增量构buildfunction非常好。

您可能还想阅读我的移植Maven项目的经验的写法。

在你有pom.xml的目录下运行下面的命令:

gradle init –type pom

这应该转换你的maven pom.xml到build.gradle

您可以随时将buildDir更改为buildDir下的'target' ,如果您希望构build输出到像maven这样的'target'而不是'build'之下:

 buildDir = 'target' 

maven2Gradle似乎已经被replace为能够从命令行运行gradle init (尽pipe这是一个相当实验性的function)。 从Maven项目中进行一些基本的Gradle设置似乎工作正常。