从Maven 2/3迁移到Gradle

时间:2011-10-10 22:41:44

标签: maven-2 migration build-process gradle

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

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

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

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

5 个答案:

答案 0 :(得分:34)

从Maven到Gradle的迁移并不像从Ant到Maven那样容易(至少在目前)。您可以轻松reuse Ant scripts并在Gradle构建中将其作为一等公民。 Gradle roadmapdeep import of Maven builds也有wide breath of plugins的任务。

到目前为止,我已将两个企业Maven版本迁移到Gradle。它们都是使用标准Maven插件的多模块项目。我基本上重写了Gradle方法的构建,至少需要一些关于Gradle的知识。根据我的经验,您可以轻松地在Gradle中运行相同的构建。 Gradle并没有真正把你包装在这里并且相当灵活。在此过程中,您可能会发现自己必须编写一个不存在的自定义插件,具体取决于您使用的Maven插件。但是,那里已经有WAR inplace了。到目前为止,我还没有陷入真正的障碍。即使Gradle文档相当不错,您可能会发现自己正在阅读很多Gradle论坛帖子,以找到解决您的一个问题的方法。一些标准的Maven功能不支持开箱即用,例如: provided范围或Artifactory Gradle plugin。但是,有很简单的方法可以解决它。我没有使用Artifactory存储库。我处理的是Nexus存储库。据我所知,Gradle家伙对Artifactory有很好的支持。 编辑:JFrog提供Maven2Gradle

一个好的开始方法是使用迁移工具{{3}},您可以从Maven构建中生成Gradle脚本。就个人而言,我还没有使用它。我与Maven构建并行开发了Gradle构建,这不会造成任何麻烦。 Maven把它放了 target下的输出,build下的Gradle。确保为变革做好准备。让他们试一下Gradle构建并熟悉该工具。

完全迁移后,您将对构建的可维护性和可扩展性感到非常高兴。添加自定义构建逻辑非常容易,你会感激你离开了XML-land。在性能方面,你也不会退后一步。增量构建功能非常有效。

答案 1 :(得分:11)

您可能还想阅读this write-up将myven项目移植到gradle的经验。

答案 2 :(得分:8)

在您拥有pom.xml的目录中,只需运行以下命令:

gradle init - type pom

这应该将您的maven pom.xml转换为build.gradle

答案 3 :(得分:1)

如果您希望构建输出位于buildDir而不是'target',如maven,则可以随时将'target'更改为'build'

buildDir = 'target'

答案 4 :(得分:1)

maven2Gradle似乎已被替换为能够从命令行运行gradle init(尽管它是一个相当实验性的功能)。从Maven项目中进行一些基本的Gradle设置似乎没问题。