github/gitignore · Java.gitignore
Java .gitignore 템플릿 해설
Java.gitignore가 .class 파일, 패키지 아카이브(jar·war), JVM 크래시 로그를 무시하는 이유와 빌드 도구 템플릿과 함께 쓸 때의 순서 문제를 설명합니다.
Java.gitignore는 13줄 정도의 짧은 템플릿으로, 컴파일 결과와 JVM이 남기는 파일만 다룬다. Maven의 target/이나 Gradle의 build/는 들어 있지 않으므로 실제 프로젝트에서는 Maven·Gradle 템플릿과 IDE 템플릿을 함께 쓰는 것이 보통이다.
가장 눈여겨볼 규칙은 *.jar다. 배포용 아카이브를 저장소에 넣지 않으려는 의도지만, 빌드 도구의 래퍼(wrapper) jar까지 함께 무시되므로 조합 순서를 신경 써야 한다.
규칙별 해설
| 패턴 | 무엇을, 왜 무시하나 |
|---|---|
*.class | 컴파일 결과javac가 소스에서 만드는 바이트코드다. 소스만 있으면 언제든 다시 만들 수 있고, 컴파일러 버전에 따라 내용이 달라진다. |
*.jar*.war*.nar*.ear*.zip*.tar.gz*.rar | 패키지 아카이브빌드 결과로 나오는 배포 파일과 압축 파일이다. 의존성 jar를 저장소에 직접 넣던 예전 방식 대신 Maven Central 같은 저장소에서 받도록 하는 것이 목적이다. |
hs_err_pid*replay_pid* | JVM 크래시 로그JVM이 비정상 종료할 때 작업 디렉터리에 남기는 hs_err_pid<번호>.log와 JIT 컴파일러 재현용 replay_pid 파일이다. 디버깅용 일회성 파일이다. |
*.log | 로그애플리케이션 실행 로그다. 로그 파일을 커밋하면 실행할 때마다 변경이 생기고 운영 정보가 새어 나갈 수 있다. |
*.ctxt.mtj.tmp/ | BlueJ·J2ME교육용 IDE BlueJ의 컨텍스트 파일과 Mobile Tools for Java(J2ME) 임시 폴더다. 해당 도구를 쓰지 않으면 영향이 없다. |
실무에서 주의할 점
*.jar는 Gradle 래퍼의gradle/wrapper/gradle-wrapper.jar도 무시한다. Gradle 템플릿의!gradle-wrapper.jar가 이 문제를 푸는데, git은 마지막에 일치한 규칙을 따르므로 Java 다음에 Gradle이 오도록 선택해야 한다.- 빌드 폴더(
target/,build/)는 이 템플릿에 없다. Maven 또는 Gradle 템플릿을 추가한다. - IntelliJ의
.idea/, Eclipse의.project·.classpath같은 IDE 파일은 JetBrains·Eclipse 템플릿으로 다룬다. - 라이브러리 jar를 꼭 저장소에 넣어야 한다면
!libs/*.jar처럼 특정 경로만 다시 포함한다.
원본 템플릿
Java.gitignore
# Compiled class file*.class# Log file*.log# BlueJ files*.ctxt# Mobile Tools for Java (J2ME).mtj.tmp/# Package Files #*.jar*.war*.nar*.ear*.zip*.tar.gz*.rar# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xmlhs_err_pid*replay_pid*
템플릿 출처: github/gitignore/Java.gitignore @356fd7b (2026-09-11) · CC0-1.0