Maven 2 从Maven 2/3迁移到Gradle

Maven 2 从Maven 2/3迁移到Gradle,maven-2,migration,build-process,gradle,Maven 2,Migration,Build Process,Gradle,我一直在调查格拉德尔,看起来很有趣。我认为能够用XML以外的任何其他语言编写脚本是非常酷的,而且我不清楚polyglot Maven POM文件是否仍然是一个可行的选择 我正在从事一个使用Maven 2.2.1作为构建工具的项目。本项目: 是多模块的 使用(也是我们自己的)插件 依赖于人工代理存储库 从Maven迁移到Gradle有什么经验吗?陷阱,痛点,角落案例?任何一种体验都是非常受欢迎的。从Maven到Gradle的迁移不像从Ant到Maven那么容易(至少目前如此)。你可以很容易地让

我一直在调查格拉德尔,看起来很有趣。我认为能够用XML以外的任何其他语言编写脚本是非常酷的,而且我不清楚polyglot Maven POM文件是否仍然是一个可行的选择

我正在从事一个使用Maven 2.2.1作为构建工具的项目。本项目:

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

从Maven迁移到Gradle有什么经验吗?陷阱,痛点,角落案例?任何一种体验都是非常受欢迎的。

从Maven到Gradle的迁移不像从Ant到Maven那么容易(至少目前如此)。你可以很容易地让他们成为你的Gradle建筑中的一流公民。还有一个任务在等待

到目前为止,我已将两个enterprise Maven构建迁移到Gradle。它们都是使用标准Maven插件的多模块项目。我基本上是以Gradle的方式重写构建的,这至少需要一些关于Gradle的知识。根据我的经验,你也可以很容易地在Gradle中运行相同的构建。Gradle在这里并没有真正限制你,而且相当灵活。在这个过程中,您可能会发现自己不得不编写一个自定义插件,而这个插件还不存在,这取决于您使用的Maven插件。然而,已经有了一个解决方案。到目前为止,我还没有遇到真正的障碍。尽管Gradle文档非常好,但您可能会发现自己阅读了很多Gradle论坛的帖子,以找到解决问题的方法。一些标准Maven功能不支持开箱即用,例如提供的
范围或。然而,有一些简单的方法可以解决这个问题。我没有使用过人工仓库。我处理的是Nexus存储库。据我所知,Gradle的人对Artifactory有很好的支持编辑:JFrog提供了一个

一个好的开始方法是使用迁移工具,让您从Maven构建中生成一个Gradle脚本。就我个人而言,我还没有使用它。我开发了Gradle构建,与Maven构建并排开发,没有造成任何问题。马文提出了自己的观点 在
target
下输出,在
build
下渐变。确保你的团队做好了应对变化的准备。让他们尝试Gradle构建并熟悉该工具


一旦完全迁移,您将非常满意构建的可维护性和可扩展性。添加自定义构建逻辑非常容易,您将很感激您离开了XML领域。就表现而言,你也不会后退一步。增量构建功能做得很好。

您可能还想了解我将maven项目移植到gradle的经验

如果希望生成输出位于
'target'
下,而不是像maven一样位于
'build'
下,则始终可以将gradle下的
buildDir
更改为
'target'

buildDir = 'target'

maven2Gradle似乎已经被从命令行运行
gradle init
所取代(尽管这是一个相当实验性的特性)。从Maven项目中执行一些基本的Gradle设置似乎可以正常工作。

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

gradleinit——pom型


这将把你的maven pom.xml转换成build.gradle

gradle war插件现在(即在gradle 1.0-milestone-6中)支持两种额外的配置:compileProvided和runtimeProvided。不幸的是,如果你的项目没有应用war插件,这对你没有帮助。您仍然需要定义自己提供的
配置。Gradle社区对此仍有争议,例如,看到了吗?如果你的网站宕机,你能在这里添加一个摘要吗?