如何将Maven构建转换为Gradle?


67

我知道我应该使用我的build.gradleinit.gradle文件,但是我不知道该写什么或如何使用该pom.xml文件指向我的项目文件夹。


如果您是编码的新手,我不建议您使用Gradle,因为它要求您使用Groovy代码定义构建。在发布过于模糊而无法回答的问题之前,您应该阅读一些基本的Groovy,Maven和Gradle教程。
gareth_bowles 2013年

不幸的是,我需要在不久的将来进行概念验证。我想一个更好的问题是,如何将Maven项目转换为Gradle。
user3150054 2013年

Answers:


119

第一步是gradle init在包含(主)POM的目录中运行。这会将Maven构建转换为Gradle构建,生成一个settings.gradle文件和一个或多个build.gradle文件。对于更简单的Maven构建,这就是您需要做的。对于更复杂的Maven构建,可能需要在Gradle端手动添加无法自动转换的功能。

https://guides.gradle.org/migrating-from-maven/


2
生成的内容build.gradle中应该有一条注释,说明其含义。
Peter Niederwieser 2014年

1
是的,它是这样的:compile(group:'commons-lang',name:'commons-lang',version:'1.0.1'){/ *此依赖项最初在Maven提供的范围内,但该项目没有战争类型。Gradle尚不支持此行为,因此此依赖关系已转换为编译依赖关系。解决后,请查看并删除此封包。* /
user3150054

1
如果您需要帮助,请在gradle provided scope此处或在forums.gradle.org搜索。这是一个常见的问题。
Peter Niederwieser 2014年

5
我必须在转换后的Maven war项目中明确添加“ apply plugin:'war'”(即使我的pom.xml具有<packaging> war </ packaging>),以便将“ providedCompile组:'javax.servlet”名称: 'servlet的API' ......“工作
DJB

1
哪个Gradle版本?如果我没记错的话,最新的Gradle版本将自动执行此操作。
Peter Niederwieser 2014年

0

正如Peter Niederwieser所说:

对于更复杂的Maven构建,可能需要在Gradle端手动添加无法自动转换的功能。

尽管您必须自行编写一些部分。对于复杂的Maven构建,有一个在线服务可能是有用的工具。maven2gradle是github上的一个项目,可以将在线依赖项元素自动从maven转换为gradle脚本。
使用它,

  1. maven2gradle。网址
  2. 打开并选择包含您的Maven文件。
  3. 将您的Maven依赖项粘贴到该网页的文本框中(带有或不带有依赖项根元素)。
  4. 单击转换按钮。

有关更多信息,请 访问http://sagioto.github.io/maven2gradle/

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.