2011-10-10 58 views
38

我一直在寻找Gradle,看起来很有趣。我认为能够使用除XML之外的其他语言编写脚本非常酷,并且我不清楚polyglot Maven POM文件是否仍然是可行的选项。从Maven 2/3迁移到Gradle

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

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

是否有任何的经验在那里从Maven来摇篮迁移?陷阱,痛点,角落案件?任何经验都是非常受欢迎的。

回答

34

从Maven到Gradle的迁移并不像从Ant到Maven那么容易(至少目前是这样)。你可以很容易地reuse Ant scripts,并让他们在您的Gradle构建中成为一等公民。 deep import of Maven builds也有Gradle roadmap的任务。

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

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

完全迁移后,您会对构建的可维护性和可扩展性感到非常高兴。添加定制构建逻辑非常简单,您将非常感激您离开XML-land。在表现方面,你也不会退后一步。增量构建功能很好地完成了它的工作。

+2

的摇篮war插件(即在Gradle 1.0-milestone-6中)支持两种额外的配置:compileProvided和runtimeProvided。 –

+2

不幸的是,如果你的项目没有应用WAR插件,这不会对你有所帮助。你仍然必须定义你自己的“提供”配置。这仍然是Gradle社区的讨论内容,例如看到这个[JIRA门票](http://issues.gradle.org/browse/GRADLE-784)。 –

11

您可能还想通过this write-up了解我的移植Maven项目的经验。

+8

你能否在这里添加一个总结,以防万一你的网站出现故障? –

1

您可以随时更改buildDir'target'下gradle这个,如果你想生成输出到'target',而不是'build'去下像行家:

buildDir = 'target' 
1

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

8

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

gradle这个初始化--type POM

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