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