版本号 / 包与依赖

Maven 转 Gradle

粘贴依赖 XML、Gradle 声明或坐标,选择目标格式并核对作用域提醒。

Maven 转 Gradle

依赖输入

转换结果

在当前浏览器中转换。依赖声明不会上传,也不会发送给仓库。

坐标格式:g:a[:v[:classifier]]。每行一条 Gradle 调用或坐标;包装花括号单独成行。

最多 65,536 个字符、200 条依赖。仅支持外部模块字面量,不支持完整项目。

输入或选项已变更,请重新转换后导出。

使用 Maven 转 Gradle 时,常见场景是库的文档只给了另一种构建格式。这里直接处理依赖声明,不需要连同父项目、仓库和插件一起粘贴。

转换结果是供项目使用的片段。复制之前,请确认目标项目的插件、版本管理和测试类路径;得到一段合法声明,不代表这个版本已在仓库存在。

为什么使用 Maven 转 Gradle

减少坐标重写时的遗漏

Maven 转 Gradle 会一起处理 groupId、artifactId、version 和 classifier。XML 的多行字段可转换为 Groovy 或 Kotlin 声明,切换两种 DSL 时保留支持的原配置名。

相同颜色的坐标字段从多行 XML 卡片变成两种紧凑依赖声明

把作用域差异摆在结果旁

compile 和 implementation 不是完全等价的发布语义,provided 与 compileOnly 的测试可见性也有差异。结果旁的提醒帮助你先确认依赖用途,再放入实际项目。

作用域和分类器标记通过转换器,而完整项目形状在入口被挡住

先确定坐标顺序和依赖用途

01

区分坐标的第四段

自动识别接受 XML、支持的 Gradle 调用和逐行裸坐标。裸坐标采用 g:a[:v[:classifier]],第四段固定表示分类器;不要把 Maven 的 packaging 顺序直接套进来。

02

按应用或库选择配置

Maven compile 和裸坐标默认生成 implementation。仅当 Java 库需要向使用者暴露该依赖时选择 api;已有 Gradle 声明在两种 DSL 之间转换时不受此选项改写。

03

掌握结果刷新时机

自动模式在修改后等待 350 毫秒执行;关闭后可以用 Ctrl/Cmd + Enter 转换。任何输入或选项变化都会禁用导出,等数量和映射提醒更新后再复制。

依赖片段中哪些信息会保留

双向依赖转换

Gradle 转 Maven 支持 implementation、api、compileOnly、runtimeOnly 以及三种测试配置。生成的 XML 省略默认 compile 作用域,其余支持的作用域明确写出。

两种 Gradle 写法

Groovy 使用单引号坐标,Kotlin DSL 使用带括号的双引号字符串。两种格式互换时,api 和 testRuntimeOnly 等已有配置保持原名,不先折叠成 Maven scope。

分类器与外部版本管理

第四段坐标对应 XML 的 classifier。缺少版本时保留省略并提醒依赖已有 BOM、平台或依赖管理提供版本;不会猜一个最新版。有分类器时必须明确写出版本。

批量声明与可选包装

最多转换 200 条依赖,保留输入顺序和重复项。可选择输出目标格式的 dependencies 包装;注释及原有缩进不保留,方便把结果放入已存在的依赖区块。

只处理可明确解释的依赖声明

不迁移整个项目
完整 pom.xml 或 build.gradle 的插件、仓库、profiles 和父项目会影响构建行为,本工具拒绝这些结构。整项目应使用迁移工具,并通过实际构建核验。
只接受外部模块字面量
拒绝属性占位符、插值、动态版本、版本范围、映射写法、闭包、project()、files()、platform() 和版本目录别名。坐标字段仅接受英文字母、数字、下划线、点及连字符,请先在构建环境中解析其他表达式。
不支持的元数据直接报错
拒绝 optional、exclusions、system/import 作用域及非 jar 类型。未知字段、未知属性、DTD 和处理指令也会使整批转换失败,不会删掉这些信息后导出剩余依赖。
映射仍需核对类路径
compile 对应 implementation 或 api,provided 对应 compileOnly,runtime 对应 runtimeOnly,test 对应 testImplementation。反向转换会合并 Gradle 的部分区别;测试类路径及发布行为不保证完全一致。
限制有界,也不查询仓库
最多 65,536 个字符、200 条依赖。每条 Gradle 调用或裸坐标占一行,包装花括号单独成行。工具不查询版本是否存在,不解析传递依赖、冲突或仓库地址。

Maven 转 Gradle 常见问题

Maven 依赖的 type 和 scope 在 Gradle 中如何表示?

支持四种常用作用域,具体映射见规则。type 只能省略或设为 jar;test-jar、pom 涉及隐含分类器或平台含义,不能只靠字段改名准确处理,因此会拒绝。

没有 version 的依赖可以转换吗?

可以。支持 group:artifact 以及不含 version 的 XML。结果仍然省略版本,目标项目必须已有合适的 BOM、平台或依赖管理机制,本工具不会补版本。

能处理 ${spring.version} 这样的属性占位符吗?

不支持。请先将属性解析成具体版本再粘贴。把 Maven 属性直接放入 Gradle 字符串可能改变表达式含义,这里既不会执行脚本,也不会假装知道变量值。

如何把 Groovy 的 build.gradle 改成 Kotlin 的 build.gradle.kts?

把支持的依赖调用粘贴进来,目标选择 Kotlin,即可生成括号及双引号写法。插件、任务、映射参数和任意 Groovy 逻辑需要单独迁移。

有没有能把 Gradle 文件转成 Maven POM 的在线工具?

本页支持 Gradle 转 Maven 依赖片段,但不会把完整 build.gradle 变成完整 POM。仓库、插件、发布配置和模块结构必须结合项目另行处理。

转换中遇到问题?

把声明放到正确的依赖区块

回到 Maven 转 Gradle 工具,检查映射提醒与依赖数量,再复制最新结果到项目中。