本文档涵盖了针对 Java 构建工具和依赖管理系统(主要关注 Maven 和 Gradle)的 gitignore 模式。这些模式通过排除不应提交到版本控制的构建产物、依赖缓存和工具特定配置文件,帮助开发人员维护整洁的代码库。
有关 Terraform 等基础设施即代码工具的信息,请参阅Terraform 与基础设施即代码。有关操作系统特定模式,请参阅操作系统特定模式。
构建工具在构建过程中会生成大量文件,这些文件通常应从版本控制中排除。其中包括
来源:Maven.gitignore1-17 Gradle.gitignore1-21
Maven 是一种流行的构建自动化和依赖管理工具,主要用于 Java 项目。其配置定义在项目对象模型 (POM) 文件中,通常命名为pom.xml。
主要忽略文件
| 模式 | 描述 | 行参考 |
|---|---|---|
target/ | 包含所有编译输出和打包产物 | Maven.gitignore1 |
pom.xml.* | Maven POM 文件的备份和临时版本 | Maven.gitignore2-5 |
release.properties | 发布过程中创建的属性文件 | Maven.gitignore6 |
dependency-reduced-pom.xml | 使用 Maven Shade 插件构建时生成 | Maven.gitignore7 |
buildNumber.properties | 由 buildnumber-maven-plugin 使用 | Maven.gitignore8 |
.mvn/timing.properties | Maven 构建的性能指标 | Maven.gitignore9 |
.mvn/wrapper/maven-wrapper.jar | Maven Wrapper 二进制文件(有特殊例外) | Maven.gitignore10-11 |
.project, .classpath | Eclipse 集成文件 | Maven.gitignore13-17 |
Maven Wrapper 文件提供了一种方法,以确保在构建项目时使用特定的 Maven 版本。.mvn/wrapper/maven-wrapper.jar 文件通常会被标准的 Java gitignore 模式(通常排除所有.jar 文件)忽略,但以下注释则将其作为例外处理:
# https://github.com/takari/maven-wrapper#usage-without-binary-jar
.mvn/wrapper/maven-wrapper.jar
Gradle 是一种支持多语言开发的构建自动化工具。它使用基于 Groovy 或 Kotlin 的 DSL 进行构建配置,而非 XML 配置文件。
主要忽略文件
| 模式 | 描述 | 行参考 |
|---|---|---|
.gradle | Gradle 的缓存目录,包含依赖项和其他缓存数据 | Gradle.gitignore1 |
**/build/ | 项目中任何级别的构建输出目录 | Gradle.gitignore2 |
!src/**/build/ | 防止忽略源代码中名为“build”的目录的例外规则 | Gradle.gitignore3 |
gradle-app.setting | Gradle GUI 的配置 | Gradle.gitignore6 |
.gradletasknamecache | 任务名称的缓存文件 | Gradle.gitignore15 |
.project, .classpath | Eclipse 集成文件 | Gradle.gitignore18-21 |
与 Maven 类似,Gradle 也使用包装器系统来确保构建的一致性。gitignore 文件中包含特定例外,以确保包装器文件被纳入版本控制。
# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
!gradle-wrapper.jar
# Avoid ignore Gradle wrappper properties
!gradle-wrapper.properties
尽管 Maven 和 Gradle 在架构和操作上有所不同,但它们的 gitignore 文件中共享一些通用模式
Maven 和 Gradle 的 gitignore 文件都包含 Eclipse 集成的模式
# Eclipse m2e generated files
# Eclipse Core
.project
# JDT-specific (Eclipse Java Development Tools)
.classpath
这些文件由 Eclipse 在导入 Maven 或 Gradle 项目时生成,不应提交,因为它们包含用户特定的路径信息。
来源:Maven.gitignore13-17 Gradle.gitignore17-21
| Maven | Gradle | 目的 | 是否应忽略? |
|---|---|---|---|
target/ | build/ | 包含编译输出 | 是 |
src/ | src/ | 包含源代码 | 否 |
| 不适用 | .gradle/ | 本地 Gradle 缓存 | 是 |
.m2/repository/ (系统级) | .gradle/caches/ | 依赖缓存 | 是 |
.mvn/wrapper/ | gradle/wrapper/ | 工具包装器文件 | 部分(有例外) |
来源:Maven.gitignore1-11 Gradle.gitignore1-12
! 模式来对更广泛的忽略规则进行例外处理。来源:Maven.gitignore1-17 Gradle.gitignore1-21
尽管本文档侧重于 Maven 和 Gradle,但类似原则也适用于其他构建工具,例如 Ant、SBT、Bazel 等。每个工具都会有
对于特定语言的构建工具,请参阅编程语言模板的文档,其中涵盖了各种语言的构建工具,例如 JavaScript 的 npm、Python 的 pip 等。