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构建。
Post Directory
