VSCode용 Google Java Format 확장 개발
에 기능을 덧붙여,
마켓플레이스에 올리지 않고 로컬에서만 설치해 사용하고 있었다.
그런데 원본 확장의 업데이트가 끊긴 지 5년이 넘었고, 내가 수정한 버전을 로컬에서만 쓰는 것도 점점 불편해졌다.
그래서 아예 새로 만들기로 했다.
아래는 그렇게 만든 확장이다.
GitHub 리포지토리
👇확장 설명서 (README.md)
Google Java Format for VSCode
VSCode에서 을 Java 포매터로 사용할 수 있게 해주는 확장입니다.
기능
Java 파일을 google-java-format 규칙으로 포맷합니다.
Native 실행 파일과 JAR 실행 방식을 모두 지원합니다.
설정 화면에서 실행 방식과 실행 파일 경로를 지정할 수 있습니다.
설정 화면
요구사항
VSCode 1.120.0 이상
google-java-format 실행 파일
Native 방식: OS에 맞는 native image 실행 파일
JAR 방식:
google-java-format-<version>-all-deps.jar
JAR 방식 사용 시 Java 실행 환경
google-java-format 파일은 에서 받을 수 있습니다.
확장 설정
실행 방식
gjfe.executionType: google-java-format 실행 방식을 선택합니다.
선택 가능한 값은 다음과 같습니다.
native: native image 실행 파일을 사용합니다.jar: JAR 파일을 Java로 실행합니다.
google-java-format 1.20.0부터 native image가 제공됩니다. 일반적으로 JAR 방식보다 실행 속도가 빠르므로, 사용할 수 있는 환경이라면 native 방식을 권장합니다.
Native 실행 방식
gjfe.nativeImagePath: native image 실행 파일의 전체 경로입니다.
예:
C:\google-java-format\google-java-format_windows-x86-64.exeJAR 실행 방식
gjfe.jarPath: google-java-format JAR 파일의 전체 경로입니다.gjfe.javaHome: JAR 파일을 실행할 때 사용할JAVA_HOME경로입니다.gjfe.jvmOptions: JAR 파일 실행 시 추가할 JVM 옵션 목록입니다.
설정값 예시:
gjfe.jarPath
C:\git-other\google-java-format\core\target\google-java-format-1.35.0-all-deps.jar
gjfe.javaHome
C:\JDK\21
Java 17 이상에서 google-java-format을 JAR 방식으로 실행할 때 JDK 내부 API 접근이 제한될 수 있습니다. 이 확장은 다음 --add-exports 옵션을 기본값으로 제공합니다.
--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED
--add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED
--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED
--add-exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED
--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED
--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED--add-exports 옵션에 대해서 등호 없이 입력한 값도 실행 가능한 형태로 처리하지만, 등호(=
알려진 이슈
현재 등록된 알려진 이슈가 없습니다.
릴리스 노트
0.0.1
최초 릴리스
Native 실행 방식 지원
JAR 실행 방식 지원
후기
직접 만들어 보니 생각보다 꽤 만족스럽다.
로컬에서 VSCode 확장을 개발하는 흐름도 전보다 훨씬 잘 이해하게 됐다.
조금 더 사용해 보고 문제가 없으면 마켓플레이스에도 배포해 보자. 😊
그리고,
지금은 Google Java Format GitHub 사이트에서 native 실행 파일을 수동으로 내려받아 설정하고 있지만,
VSIX 확장 프로젝트를 처음 생성한 직후, Node.js 환경에서 제공하는 전역 객체(process, Buffer 등), Visual Studio Code 확장 API(vscode.window, vscode.commands 등), 그리고 Mocha 테스트 프레임워크에서 사용하는 함수(describe, it 등)와 같은 내장 변수 및 타입을 TypeScript 컴파일러가 인식하지 못하는 오류가 발생할 수 있다.
이러한 문제를 해결하기 위해서는 tsconfig.json 파일의 compilerOptions 항목에 types 옵션을 명시적으로 추가하여, 프로젝트가 Node.js, VS Code API, Mocha의 타입 정의를 포함하도록 설정해야 한다.
예시는 다음과 같다.
{
"compilerOptions": {
"types": ["node", "vscode", "mocha"],
}
}위와 같이 설정하면 TypeScript가 해당 타입 정의 파일(@types/node, @types/vscode, @types/mocha
이후에 Cursor나 Antigravity에도 잘 설치되는지 확인해보았는데...
1.120 버전 기준이 비교적 최신이라서 그런지? 설치를 할 수가 없었다. 😂
2026년 6월 기준으로 각 VSCode 기반 IDE들의 버전을 보면 아래와 같은데...
![]() |
| Antigravity: 1.107.0 |
![]() |
| Cursor: 1.105.1 |
![]() |
| VSCode: 1.123.0 |
확인해봤을 때.. 버전 정보들이 위와 같아서...
가장 낮은 버전인 1.105.1로 하향 조정했다.
.vscode-test.mjs
import { defineConfig } from "@vscode/test-cli";
export default defineConfig({
files: "out/test/**/*.test.js",
// 2026/06/09 기준
// - Cursor: 1.105.1
// - Antigravity IDE: 1.107.0
// - VSCode: 1.123.0
version: "1.105.1",
});package.json
"engines": {
"vscode": "^1.105.1"
},
"devDependencies": {
"@types/vscode": "^1.105.1",
이런식으로 다시 바꾸고 다시 vsix로 패키지해서 Cursor와 Antigravity에 설치해봤을 때...
잘 동작했다. 😊👍👍




댓글
댓글 쓰기