Kotlin使用Gradle和Spring Boot创建多模块Web项目
大家好,我是曾续缘。在本教程中,我们将创建一个使用Spring Boot的多模块Web项目。多模块项目允许我们将应用程序的不同部分分离到不同的模块中,这样有助于维护和组织大型项目。
1. 创建项目
首先,我们使用IntelliJ IDEA创建一个新的项目。选择“Gradle”作为项目类型,并选中“Kotlin”语言选项,这将帮助我们在项目中方便地使用Kotlin和自动导入依赖。
2. 选择Web依赖
在创建项目的过程中,选择“Web”依赖,这将添加Spring Web依赖到我们的项目中,使我们能够创建Web服务和接口。
3. 项目结构
创建完成后,我们的项目将包含一个名为src
的主源代码目录和一个build.gradle.kts
文件,这是我们的Gradle构建脚本。
4. 删除src目录
由于我们将创建多个模块,我们不需要默认的src
目录。删除它,我们将在后续步骤中创建自己的模块和源代码目录。
5. 配置子项目
在build.gradle.kts
文件中,我们添加一个subprojects
块。这将允许我们为所有子项目配置共同的设置,例如依赖项和任务。把文件中原先的dependencies
以及tasks
移动进去到subprojects
。 在
subprojects
块中,我们使用apply plugin
语句为所有子项目应用以下插件:
org.springframework.boot
: 添加Spring Boot支持。io.spring.dependency-management
: 管理项目依赖。kotlin-jvm
: 添加Kotlin对JVM的支持。kotlin-spring
: 添加Kotlin对Spring的支持。
查看代码
apply {
plugin("io.spring.dependency-management")
plugin("org.springframework.boot")
plugin("org.jetbrains.kotlin.plugin.spring")
plugin("org.jetbrains.kotlin.jvm")
}
dependencies {
implementation("org.springframework.boot:spring-boot-starter-web")
implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
implementation("org.jetbrains.kotlin:kotlin-reflect")
testImplementation("org.springframework.boot:spring-boot-starter-test")
}
6. 创建接口模块
接下来,我们创建一个新的模块来定义我们的Web接口。在这个模块中,我们将编写接口的请求路径和对应的方法。 我们修改这个模块的
build.gradle.kts
文件,只保留repositories
部分,因为我们将在这个模块中只定义接口,不包含实现。
7. 定义Web接口
在接口模块中,我们定义Web接口,编写请求路径和对应的方法。这些方法将响应HTTP请求并返回简单的字符串响应。 我们还需要修改
build.gradle.kts
文件,禁用bootJar
任务并启用jar
任务。这样,我们将创建一个普通的Java jar包,而不是一个可执行的Spring Boot jar包。
bootJar
任务用于创建可执行的Spring Boot jar包。这个jar包包含了应用程序的所有依赖项,可以通过java -jar
命令启动。jar
任务用于创建普通的Java jar包,通常只包含应用程序的class文件,不包含依赖项。
tasks.bootJar{
enabled = false
}
tasks.jar{
enabled = true
}
8. 创建实现模块
我们再创建一个新的模块app
来启动项目并实现具体的接口。在这个模块中,我们将添加依赖,设置启动类,并实现我们在接口模块中定义的Web接口。 我们添加依赖,将当前
app
模块设置为依赖于同一构建中的名为 api
的项目模块。这样,Gradle 在编译和运行当前项目时,会包含 api
模块的代码和资源。 我们创建启动类,并创建
controller
实现 Web
接口。这些方法会响应HTTP请求并返回简单的字符串响应。
9. 启动和测试项目
项目默认在8080端口启动。我们可以访问对应的接口,并看到结果。 我们还可以在
app
模块添加application.yaml
文件,来对SpringBoot项目进行配置端口和其他设置。
10. 总结
通过本教程,我们使用Gradle和Kotlin成功创建了一个多模块的Spring Boot Web项目。我们不仅了解了如何使用Kotlin来编写我们的应用程序代码,而且还学习了如何使用Kotlin来编写我们的Gradle构建脚本,这是Gradle较新的一种用法。
Kotlin与Gradle的结合,使得构建脚本更加简洁、表达性更强,同时也提高了代码的可读性和维护性。通过使用Kotlin DSL,我们可以更方便地配置和管理项目依赖、任务和插件。