Maven 项目中的哪些文件应该提交到 git?

Posted

技术标签:

【中文标题】Maven 项目中的哪些文件应该提交到 git?【英文标题】:What files in a Maven project should be committed to git? 【发布时间】:2019-01-18 10:37:21 【问题描述】:

我想知道 Maven 项目中的哪些文件应该提交给 git。

我应该在提交之前执行mvn clean,还是将某些文件添加到.gitignore 文件中?

【问题讨论】:

绝对是.gitignore。 【参考方案1】:

我个人将 Maven gitignore 和 Java gitignore 用于 Maven 项目。您可能需要使用 Maven 项目中使用的语言对其进行调整。

https://github.com/github/gitignore/blob/master/Maven.gitignore

target/
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
pom.xml.next
release.properties
dependency-reduced-pom.xml
buildNumber.properties
.mvn/timing.properties
# https://github.com/takari/maven-wrapper#usage-without-binary-jar
.mvn/wrapper/maven-wrapper.jar

https://github.com/github/gitignore/blob/master/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.xml
hs_err_pid*

在提交之前执行mvn clean 是一种好习惯,还是我将某些文件添加到 .gitignore 文件中?

首先将规则添加到您的 .gitignore 文件中,这使得 Git 可以正确忽略不需要的文件。了解Maven standard directory layout 也将帮助您更好地确定哪些是不需要的目录。

【讨论】:

这是否避免了 .mvn 目录被跟踪?是否需要跟踪 .mvn 目录?我不是在谈论本地 Maven 存储库,它可以位于文件系统中的其他位置,而是 Springboot 项目本身内的 .mvn 目录(例如 wrapper/MavenWrapperDownloader.java 所在的位置)。 @ElPiter 我共享的Maven.gitignore 文件,它不会阻止整个.mvn 目录被跟踪,它只排除了那里的一些文件。根据maven.apache.org/configure.html#mvn-folder ,.mvn 位于项目的***目录中,文件maven.configjvm.configextensions.xml 包含运行Maven 的项目特定配置。此文件夹是项目的一部分,可以签入到您的版本控制中。例如,JGit 使用.mvn,这里查看源代码github.com/eclipse/jgit/tree/v5.11.0.202103091610-r/.mvn【参考方案2】:

在提交之前执行 mvn clean 是一种好习惯,还是我 将某些文件添加到 .gitignore 文件中?

在提交之前执行mvn clean 根本不切实际。开发人员可能会忘记这一点,此外他们应该在每次提交时重建他们的项目。 正确的方法是使用.gitignore 指定要在跟踪中忽略的文件。只需提交它并推送到远程分支,所有开发人员都可以使用相同的规则。

我想知道 Maven 项目中应该提交哪些文件 混帐。

您想要提交/推送您想要版本/跟踪的文件。 但它非常广泛。你不能只为 Maven 制定规则。 Maven 有一些特殊性(例如您想忽略的target 文件夹),但您可能需要忽略更多的东西。 您通常希望提交/推送源代码和应用程​​序配置文件,例如 pom.xml 或构建中使用的任何配置文件,但您也可以添加任何其他类型的文件。例如,提交变更日志甚至是 word 文档(更罕见但可能)也可能是有效的。 通常,您不想提交的是以下文件:

取决于开发者机器(IDE、自定义文件) 由构建操作创建(Maven 中的target 文件夹,但您也可以根据您的 pom 配置拥有其他文件夹) 在构建、应用执行或发布操作期间使用的临时文件。 档案

【讨论】:

【参考方案3】:

检查一下:

https://www.gitignore.io/api/maven

一般而言,您应该忽略所有目标和元数据。如果忽略目标,则推送前不需要mvn clean

【讨论】:

以上是关于Maven 项目中的哪些文件应该提交到 git?的主要内容,如果未能解决你的问题,请参考以下文章

Androidstudio项目中的Git应该忽略哪些文件夹[重复]

如何查看git提交到本地的文件

maven项目从git导入后,不能用怎么办在Eclipse中用git提交时,如何避免提交.classpath.settings.project文件

Git系列:第七篇-Maven项目下提交时忽略不必要的文件或文件夹

识别 Maven 中的依赖项

.gitignore