====== VSCode Java ======
* [[:visual_studio_code|Visual Studio Code / VSCode]]와 [[:java|Java]]
* [[https://code.visualstudio.com/docs/java/java-tutorial|Getting Started with Java in VS Code]]
* [[https://github.com/redhat-developer/vscode-java/wiki|Home · redhat-developer/vscode-java Wiki]]
===== 설정 위치 =====
* VSCode Java 확장은 [[:eclipse|Eclipse]] JDT 를 사용하는데, 프로젝트 관련 설정이 원래는 프로젝트 디렉토리 하위에 ''.settings'' 디렉토리 등에 있었으나,
* 2021년 이후 최신 버전에서는 ''$HOME/.config/Code/User/workspaceStorage/<프로젝트UniquePath>''로 변경 되었다.
* 따라서 ''.settings/*''에 있는 설정값을 바꾸고자 한다면, 해당 디렉토리로 가서 파일을 찾아서 변경해야한다.
* 하지만, **project 디렉토리에 ''.settings/''가 존재하면 이게 더 우선시 됐다.**
===== JDK의 설치 =====
* [[https://github.com/redhat-developer/vscode-java/wiki/JDK-Requirements|JDK Requirements · redhat-developer/vscode-java Wiki]]
* 2022년 현재, vscode java extension 작동에 기본 Java 11 필요. Gradle도 java 11 기본 필요(Gradle 4.7이상만 지어원)
* 아래 설정과 무관하게 ''JAVA_HOME'' 환경변수 값 혹은 기본 JDK Path가 Java 11로 설정돼 있어야만 함.
* 기존에는 "java.home" 설정값을 사용하라고 돼 있었는데 deprecated 됨.
* 각 프로젝트의 JDK는 무관함.
* 아래의 경로는 [[linux:ubuntu|Ubuntu Linux]]의 OpenJDK 기본 경로임.
"java.configuration.runtimes": [
{
"name": "JavaSE-1.8",
"path": "/usr/lib/jvm/java-8-openjdk-amd64"
},
{
"name": "JavaSE-11",
"path": "/usr/lib/jvm/java-11-openjdk-amd64",
"default": true
},
{
"name": "JavaSE-17",
"path": "/usr/lib/jvm/java-17-openjdk-amd64"
}
],
"java.import.gradle.java.home": "/usr/lib/jvm/java-11-openjdk-amd64"
===== Java project 설정 =====
* [[https://github.com/redhat-developer/vscode-java/wiki/Settings-Global-Preferences|Settings Global Preferences]]
* 전역 설정
"java.settings.url": "/home//settings.prefs"
* [[https://gist.github.com/snjeza/e59f0ce031f237a9d0f4f2aec404a4bb|/.settings/org.eclipse.jdt.core.prefs]] 로 전역 설정 override
===== Java --enable-preview =====
* [[https://github.com/redhat-developer/vscode-java/wiki/Enabling-Java-preview-features|Enabling Java preview features · redhat-developer/vscode-java Wiki]]
* Java 신규 버전의 preview 를 활성화하려면 빌드 도구에서 먼저 컴파일시점에 활성화를 해야한다.
* [[java:preview|Java --enable-preview]]
* [[https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-debug|Debugger for Java]]는 기본적으로 preview 를 활성화하는데, 만약 활성화가 안됐다면 "Clean Language Server Workspace" 를 실행해본다.
* 그래도 안되면 ''.settings/org.eclipse.jdt.core.prefs'' 파일에서 아래 항목을 찾아서 ''enabled''로 변경한다(동일 파일이 여러개였음).
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=enabled
* 더 쉽게는, gradle 설정에 eclipse plugin 을 활성화하고 해당 값을 주입한다. 단, 이때 ''./gradlew eclipse'' 명령으로 프로젝트를 초기화해줘야 했다.
plugins {
// Apply the java-library plugin to add support for Java Library
id 'java-library'
id 'eclipse'
}
tasks.withType(JavaCompile) {
options.compilerArgs += '--enable-preview'
}
tasks.withType(Test) {
jvmArgs += "--enable-preview"
}
// buildship 은 아래를 실행하지 않는다.
// 따라서 gradlew eclipse 를 실행해줘야 한다.
eclipse.jdt.file.withProperties { props ->
props['org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures']= 'enabled'
props['org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures']= 'ignore'
}
===== java Formatter =====
* [[https://github.com/redhat-developer/vscode-java/wiki/Formatter-settings|Formatter settings]]
"[java]": {
"editor.defaultFormatter": "redhat.java"
},
"java.format.settings.url": "https://raw.githubusercontent.com/google/styleguide/gh-pages/eclipse-java-google-style.xml",
"java.format.settings.profile": "GoogleStyle",
* [[https://gist.github.com/fbricon/30c5971f7e492c8a74ca2b2d7a7bb966|formatter settings under .settings/org.eclipse.jdt.core.prefs]] 로 프로젝트 단위로 override 가능하다.
===== Extensions =====
* [[https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-pack|Extension Pack for Java]]로 일괄 설치
* [[https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-gradle|Gradle for Java - Visual Studio Marketplace]]
* [[https://marketplace.visualstudio.com/items?itemName=MicroProfile-Community.vscode-microprofile-pack|Extension Pack for MicroProfile - Visual Studio Marketplace]]
* [[https://marketplace.visualstudio.com/items?itemName=Pivotal.vscode-boot-dev-pack|Spring Boot Extension Pack - Visual Studio Marketplace]]
* [[https://marketplace.visualstudio.com/items?itemName=redhat.vscode-quarkus|Quarkus - Visual Studio Marketplace]]
* [[https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarlint-vscode|SonarLint - Visual Studio Marketplace]]
* [[https://marketplace.visualstudio.com/items?itemName=shengchen.vscode-checkstyle|Checkstyle for Java - Visual Studio Marketplace]]
* [[https://marketplace.visualstudio.com/items?itemName=adashen.vscode-tomcat|Tomcat for Java - Visual Studio Marketplace]]
===== 참조 =====
* [[https://devblogs.microsoft.com/java/java-on-visual-studio-code-update-january-2022/|Java on Visual Studio Code Update – January 2022 - Java at Microsoft]]
* [[https://devblogs.microsoft.com/java/say-goodbye-to-project-files-in-1-1-0/|Say goodbye to ".project" files in Language Support for Java™ 1.1.0 - Java at Microsoft]]