====== 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]]