将Maven构建转换为Gradle

2025/04/30

1. 概述

在本教程中,我们将学习如何将Maven构建转换为Gradle构建。为此,我们将在现有的Maven项目上使用gradle init命令

2. Gradle设置

让我们下载Gradle发行版并按照说明在我们的机器上安装Gradle,我们还可以深入了解Gradle的更多信息

3. Maven构建文件

让我们从一个标准的Maven Java项目开始,其根目录中有以下pom.xml文件:

<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>cn.tuyucheng.taketoday</groupId>
    <artifactId>maven-to-gradle</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <dependencies>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.12.0</version>
        </dependency>
    </dependencies>    <properties>        <maven.compiler.source>17</maven.compiler.source>        <maven.compiler.target>17</maven.compiler.target>    </properties>
</project>

4. 转换为Gradle

让我们进入这个Maven项目的根目录,其中包含主pom.xml文件,然后执行gradle init命令。当系统提示输入答案时,输入yes并按回车键,我们应该看到以下输出:

$ ./gradlew init
This will be executed during the initialization phase.

Found a Maven build. Generate a Gradle build from this? (default: yes) [yes, no] yes

Select build script DSL:
  1: Kotlin
  2: Groovy
Enter selection (default: Kotlin) [1..2] 2

Generate build using new APIs and behavior (some features may change in the next minor release)? (default: no) [yes, no] yes

> Task :init
Maven to Gradle conversion is an incubating feature.
For more information, please refer to https://docs.gradle.org/8.2-rc-2/userguide/migrating_from_maven.html in the Gradle documentation.

5. 生成的Gradle构建文件

现在让我们重新检查一下项目根目录的内容,现在我们应该在根目录中看到几个新文件,如果想更深入地了解,可以查看gradle-build-settings-properties

5.1 build.gradle

build.gradle文件是Gradle构建流程的核心组件,它与Maven构建的pom.xml文件直接等效。在这里,pom.xml中的属性(例如groupId、version和dependency)会被转换为其对应的Gradle版本。此外,还提供了sourceCompatibility属性,用于指示编译Java源代码时应使用的Java版本。在插件部分,我们有“java-library”,它支持构建任何类型的Java项目,以及“maven-publish”,它支持将构件发布到与Maven兼容的仓库。

/*
 * This file was generated by the Gradle 'init' task. * This project uses @Incubating APIs which are subject to change.
 */

plugins {
    id 'java-library'
    id 'maven-publish'
}

repositories {
    mavenLocal()
    maven {
        url = uri('https://repo.maven.apache.org/maven2/')
    }
}

dependencies {
    api 'org.apache.commons:commons-lang3:3.12.0'
}

group = 'cn.tuyucheng.taketoday'
version = '0.0.1-SNAPSHOT'
description = 'maven-to-gradle'
java.sourceCompatibility = JavaVersion.VERSION_1_8

publishing {
    publications {
        maven(MavenPublication) {
            from(components.java)
        }
    }
}

5.2 settings.gradle

Gradle在初始化阶段使用settings.gradle文件来识别构建中包含哪些项目

/*
 * This file was generated by the Gradle 'init' task. * This project uses @Incubating APIs which are subject to change.
 */

rootProject.name = 'maven-to-gradle'

5.3 gradlew和gradlew.bat

Gradle还生成了两个启动脚本,一个用于Windows,一个用于Unix,这些脚本可用于在未安装Gradle的机器上运行项目,我们可以通过gradle-wrapper了解更多关于Gradle包装器文件的信息。

6. 总结

在本文中,我们学习了如何将包含pom.xml的Maven构建转换为具有多个构建文件(例如build.gradle、settings.gradle、gradlew和gradlew.bat)的Gradle构建。

Show Disqus Comments

Post Directory

扫码关注公众号:Taketoday
发送 290992
即可立即永久解锁本站全部文章