Gradle从零开始创建SpringBoot项目
gradle
Gradle
的安装包(可选择二进制包或者完整包~$ mkdir -p /usr/local/gradle
~$ cd /usr/local/gradle
~$ unzip ~/Downloads/gradle-6.0-bin.zip
Gradle
的 bin
目录添加到PATH
环境变量~$ echo "export PATH=$GRADLE_HOME/bin:$PATH" >> ~/.bashrc # ~/.bash_profile ~/.zshrc
~$ source ~/.bashrc
Gradle
的可执行文件软连接到 /usr/loca/bin
~$ ln -s $GRADLE_HOME/bin/gradle /usr/local/bin/gradle
提示: $GRADLE_HOME
指的是gradle
解压后的目录, 比如 /usr/local/gradle/6.0
gradle
创建初始工程➜ Kotlin mkdir project
➜ Kotlin cd project
➜ project gradle init
Configuration on demand is an incubating feature.
Select type of project to generate:
1: basic
2: application
3: library
4: Gradle plugin
Enter selection (default: basic) [1..4] 2
Select implementation language:
1: C++
2: Groovy
3: Java
4: Kotlin
5: Swift
Enter selection (default: Java) [1..5] 4
Select build script DSL:
1: Groovy
2: Kotlin
Enter selection (default: Kotlin) [1..2] 2
Project name (default: project): app
Source package (default: app): com.oyoung
BUILD SUCCESSFUL in 24s
2 actionable tasks: 2 executed
➜ project
IntelliJ Idea
打开刚刚创建的项目build.gradle.kts
文件kotlin
相关的依赖导入dependencies {
// Align versions of all Kotlin components
implementation(platform("org.jetbrains.kotlin:kotlin-bom"))
// Use the Kotlin JDK 8 standard library.
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
// Use the Kotlin test library.
testImplementation("org.jetbrains.kotlin:kotlin-test")
// Use the Kotlin JUnit integration.
testImplementation("org.jetbrains.kotlin:kotlin-test-junit")
}
改为
dependencies {
implementation(kotlin("stdlib", "1.3.50"))
implementation(kotlin("reflect", "1.3.50")) /// kotlin 反射机制需要的库
/// 暂时不需要改动
testImplementation("org.jetbrains.kotlin:kotlin-test")
testImplementation("org.jetbrains.kotlin:kotlin-test-junit")
}
springboot
相关插件plugins {
kotlin("jvm") version "1.3.50"
kotlin("plugin.spring") version "1.3.50"
id("org.springframework.boot") version "2.2.1.RELEASE"
id("io.spring.dependency-management") version "1.0.8.RELEASE"
}
其中 使用 kotlin()
方法包裹的, 属于kotlin
模块,使用 id()
方法的是第三方模块
4. 增加 mavenCentral()
仓库
repositories {
mavenCentral()
jcenter()
}
"org.springframework.boot:spring-boot-starter-web"
dependencies {
/// ...
implementation("org.springframework.boot", "spring-boot-starter-web")
/// implementation("org.springframework.boot:spring-boot-starter-web")
/// ...
}
App.kt
package com.oyoung
class App {
val greeting: String
get() {
return "Hello world."
}
}
fun main(args: Array<String>) {
println(App().greeting)
}
改成如下:
package com.oyoung /// 这里改成自己明明的包
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication
@SpringBootApplication
class App
fun main(args: Array<String>) {
runApplication<App>(*args)
}
此刻我们看到runApplication
这一行有红色波浪线,鼠标移到上面提示:
这表示我们的kotlin build的字节码的jvm版本与我们实际设定的不一致
group = "com.oyoung"
version = "0.0.1-SNAPSHOT"
java.sourceCompatibility = JavaVersion.VERSION_1_8
-jvm-target
参数application
任务KotlinCompile
任务tasks.withType<KotlinCompile>() {
kotlinOptions {
jvmTarget = "1.8"
}
}
建议自己敲上面的代码, 在敲代码的过程中会有一个自动导入的import 添加到文件开头
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
当然了, 如果IDE响应太慢没有自动import,也可以手动导入
打开定位为App.kt
文件
在 main
函数的左侧, 显示行号的附近有一个三角形
箭头, 点击, 然后会有弹出来的菜单, 之后的操作, 你懂的…
此时, 如果一切正常的话, 将会以默认的8080端口号启动一个没有任何路由请求的SpringBoot应用程序, 如果需要修改为自定义的端口号, 需要在$PROJECT/src/main/resources
路径下新建一个application.yml
(或者application.properties
)文件:
server:
port: 4000
com.oyoung.controller
包 (或者使用自己的包前缀)Controller
类, 比如 TestController
@RestController
, 一般会自动导入 所需要的包, 没有自动导入的话, 可以按照提示按 Alt + Enter
组合按键手动导入dependencies {
/// ...
implementation(kotlin("reflect", "1.3.50"))
/// ...
}
的话, 一般会启动失败, 至于使用什么版本, 看具体情况,我自己选择的是当前最新的稳定版
至此一个完整的SpringBoot初始项目就创建完成了,