从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设置似乎工作正常。