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>com.baeldung</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><br /><br /> <properties><br /> <maven.compiler.source>17</maven.compiler.source><br /> <maven.compiler.target>17</maven.compiler.target><br /> </properties>
</project>
4. 转换到Gradle
现在,让我们进入包含主pom.xml
的Maven项目的根目录,并执行gradle init
命令。当提示时,输入yes
并按Enter
键。我们应该会看到以下输出:
$ ./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
文件的直接对应物。在这里,像groupId
、version
和dependencies
这样的pom.xml
属性被转换为其Gradle等价物。此外,还有sourceCompatibility
属性,它告诉我们在编译Java源代码时应使用哪个Java版本。在插件部分,我们有java-library
插件,它支持构建任何类型的Java项目,以及maven-publish
插件,支持将 artefacts发布到Maven兼容的仓库。
/*
* This file was generated by the Gradle 'init' task.<br /> * 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 = 'com.baeldung'
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
settings.gradle
文件在Gradle初始化阶段被使用,以识别构建中包含哪些项目。
/*
* This file was generated by the Gradle 'init' task.<br /> * 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包装器文件的更多信息,可以参考gradle-wrapper。
6. 总结
在这篇文章中,我们了解了如何将包含pom.xml
的Maven构建转换为拥有多个构建文件(如build.gradle
、settings.gradle
、gradlew
和gradlew.bat
)的Gradle构建。本文档的示例代码可以在GitHub上找到。