最近工作需求,需要在Windows 10開發Spring Boot應用,不過由於Intellij收費的緣故,轉而使用VSCode,經過一系列的配置,終於讓Spring Boot程序成功跑起來了(基於Gradle和Maven)。下面簡要描述一些需要注意的點。
VSCode Extension的安裝
在VSCode里面,至少要安裝:
- Debugger for Java (Microsoft)
- Gradle for Java (Microsoft)
- Language Support for Java(TM) by Red Hat (Red Hat)
- Spring Initializr Java Support (Microsoft)
- Test Runner for Java (Microsoft)
- Maven for Java (Microsoft)
其他插件例如Lombok,Spring Dashboard等可以自行選擇安裝
VSCode settings.json內容的修改
注意,VSCode要求Java版本至少要高於JDK11,如果必須要用JDK8的話,那么至少要下載JDK8和一個高於JDK10的JDK,為了方便,標記為JDK1x。然后,增加如下配置:
"java.home": "JDK1x的路徑"
"java.configuration.runtimes": [{"name": "JavaSE-1.8", "path": "JDK8的路徑", "default": true}, {"name": "JavaSE-1x", "path": "JDK1x的路徑"}]
"java.import.gradle.home": "Gradle的安裝路徑"
"java.import.gradle.user.home": "Gradle下載的依賴的存放路徑"
"java.import.gradle.java.home": "Gradle的JDK路徑,這里填入JDK8"
"java.import.gradle.wrapper.enabled": false
"maven.executable.path: "D:\\maven\\path\\bin\\mvn.cmd""
"maven.executable.preferMavenWrapper: false"
"maven.pomfile.autoUpdateEffectivePOM: true
"maven.view: "flat"
"maven.settingsFile: "D:\\maven\\path\\conf\\settings.xml"
"java.configuration.maven.userSettings: "D:\\maven\\conf\\settings.xml"
VSCode launch.json內容的修改
{
"version": "0.2.0",
"configurations": [
{
"type": "java",
"name": "Launch Project",
"request": "launch",
"mainClass": "com.xxx.xxx.XXXApplication",
"args": "--spring.profiles.active=dev"
}
]
}
Gradle配置文件
在build.gradle里面有幾點需要注意的:
-
Windows下路徑字符數目過多的問題,這需要安裝一個gradle-util-plugins-0.1.0-RELEASE.jar的插件:
a. 下載這個插件,然后隨便放到一個目錄下
b. 在buildscript里面加入下面內容:
dependencies { classpath files('gradle-util-plugins-0.1.0-RELEASE.jar的路徑') }
c. 如果沒有應用過application這個插件的,需要加上apply plugin: "application"
d. 在project里面加上apply plugin: "org.springframework.boot"
- bootRun {
systemProperty "spring.profiles.active", "dev"
mainClassName = "你的main class的完整名稱,包括包名"
} apply plugin: "com.github.ManifestClasspath"
e. 如果需要jacoco和sonar來做代碼質量管理,那么需要配置如下內容到project里面,如果需要本地顯示某行代碼是否被覆蓋可以考慮converage gutters這個插件:
apply plugin: "jacoco" jacoco { toolVersion = "0.8.2" } test { finalizedBy jacocoTestReport } jacocoTestReport { dependesOn test reports { xml.enabled = true csv.enabled = false html.enabled = true xml.destination file("$buildDir/jacoco/cov.xml") // 這個cov.xml的名稱是為了coverage gutters服務的 html.destination file("$buildDir/jacoco/html") } } jacocoTestCoverageVerification { dependsOn jacocoTestReport violationRules { rule { limit { conuter = "LINE" value = "CONVEREDRATIO" minimum = 1.0 } } } }