从 Maven 2/3 迁移到 Gradle

Posted

技术标签:

【中文标题】从 Maven 2/3 迁移到 Gradle【英文标题】:Migration from Maven 2/3 to Gradle 【发布时间】:2011-12-04 21:23:52 【问题描述】:

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

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

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

有没有从 Maven 迁移到 Gradle 的经验?陷阱、痛点、极端案例?任何形式的经验都非常受欢迎。

【问题讨论】:

【参考方案1】:

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

到目前为止,我已将两个企业 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 脚本。就个人而言,我还没有使用它。我将 Gradle 构建与 Maven 构建并排开发,这并没有造成任何麻烦。 Maven把它 target 下的输出,build 下的 Gradle。确保您的团队为变革做好准备。让他们试用 Gradle 构建并熟悉该工具。

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

【讨论】:

Gradle 战争插件现在(即在 Gradle 1.0-milestone-6 中)支持两个额外的配置:compileProvided 和 runtimeProvided。 不幸的是,如果您的项目没有应用 WAR 插件,这对您没有帮助。您仍然需要定义自己的 provided 配置。这在 Gradle 社区中仍然存在争议,例如看到这个JIRA ticket。【参考方案2】:

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

【讨论】:

能否在此处添加摘要,以防您的网站出现故障?【参考方案3】:

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

gradle init --type pom

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

【讨论】:

【参考方案4】:

如果您希望构建输出在'target' 下而不是'build' 像maven 一样,您可以随时将buildDir 更改为gradle 下的'target'

buildDir = 'target'

【讨论】:

【参考方案5】:

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

【讨论】:

以上是关于从 Maven 2/3 迁移到 Gradle的主要内容,如果未能解决你的问题,请参考以下文章

Gradle 学习总结—— 如何将 Spring Boot 构建工具从 Maven 迁移到 Gradle

使用 OSGI 从 Ant 迁移到 Maven?

将Java项目从maven迁移到gradle

将Java项目从maven迁移到gradle

从 Maven 迁移到 SBT

如何使用 GitHub 中的 Maven 从 NetBeans 项目迁移到 Java CI?