Git 忽略和 Maven 目标

Posted

技术标签:

【中文标题】Git 忽略和 Maven 目标【英文标题】:Git Ignores and Maven targets 【发布时间】:2010-11-02 18:29:53 【问题描述】:

任何人都知道是否可以忽略 git 管理的文件结构中特定目录的所有实例。

我希望排除具有多个子模块的 maven 项目中的所有“目标”文件夹。我知道我可以在*** .gitignore 中明确排除它们中的每一个,但我真的希望能够指定像 **/target/* 这样的模式,让它自动忽略子目录中的实例?

这可能吗?

【问题讨论】:

您使用什么配置进行这项工作? /.settings/ 只会忽略 'xxx/.settings/*',而不是 '.settings/*' 或 'xxx/yyy/.settings/*':忽略模式似乎不是递归应用。另见***.com/questions/971465/…。 【参考方案1】:

可以在.gitignore 文件中使用模式。请参阅gitignore man page。模式*/target/* 应该忽略任何名为 target 的目录及其下的任何内容。或者您可以尝试*/target/** 忽略目标下的所有内容。

【讨论】:

谢谢!对于其他人来说,.gitignore 的内容是跳过通常的 maven 和 eclipse 嫌疑人。目标/* /target/ .metadata tar.gz .classpath .project */.settings/ 您使用什么配置进行这项工作? /.settings/ 只会忽略 'xxx/.settings/*',而不是 '.settings/*' 或 'xxx/yyy/.settings/*':忽略模式似乎不是递归应用。另见***.com/questions/971465/…。 对于多模块项目,您可能希望使用 **/target/,但请注意不要在源中排除合法的“目标”目录 /target/**\.git\info\exclude 中工作。 刚刚尝试在其中一个模块中提交一个带有“目标”子包的 java 项目。 :(【参考方案2】:

根目录中的.gitignore 文件确实适用于所有子目录。我的看起来像这样:

.classpath
.project
.settings/
target/

这是一个多模块的 Maven 项目。所有子模块都使用 m2eclipse 作为单独的 eclipse 项目导入。我没有更多的.gitignore 文件。确实,如果您查看gitignore man page:

.gitignore 文件中读取的模式 在与路径相同的目录中,或 在任何父目录中

所以这应该适合你。

【讨论】:

这是比“/target/”更好的答案。它确实排除了位于目录树中的目录。但它不适用于文件(请参阅***.com/questions/971465/…) 如果你继续阅读它会说“这些模式与 .gitignore 文件的位置相匹配。”你的回答是错误的...... 我使用这种方法并使用“target/”来忽略所有 maven 构建文件夹,但是请注意,您可能会忽略位于路径中包含“target”文件夹的包中的代码。 (在具有以下类的项目中:src/main/java/org/example/game/archery/bow/LongBow.javasrc/main/java/org/example/game/archery/target/Target.java,您不会发现使用这种 .gitignore 配置的 LongBow 没有什么可打的 :-))【参考方案3】:

正如 Abhijeet 在 cmets 中已经指出的那样,您可以添加如下行:

/target/**

排除\.git\info\文件夹中的文件。

然后,如果您想摆脱远程存储库中的 target 文件夹,您需要首先从本地存储库中手动删除此文件夹,提交然后推送它。那是因为 git 会首先向您显示目标文件夹的内容。

【讨论】:

【参考方案4】:

我从 git 忽略了位于目标文件夹中的所有类。 在打开的 .gitignore 文件中添加以下行:

/.class

*/目标/**

它对我来说非常有效。试试看。

【讨论】:

【参考方案5】:

在 gitignore 中添加以下行,来自所有不需要的文件

/target/
*/target/**
**/META-INF/
!.mvn/wrapper/maven-wrapper.jar

### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr

### NetBeans ###
/nbproject/private/
/build/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/

【讨论】:

【参考方案6】:

对于 Spring Tool Suite,将以下忽略资源添加到 .gitignore 文件并提交到存储库中

*.classpath
*.class
*.prefs
*.jar
*.lst
*.project
*.factorypath
*.original
target/
.settings/
.apt_generated
.sts4-cache
.springBeans

【讨论】:

以上是关于Git 忽略和 Maven 目标的主要内容,如果未能解决你的问题,请参考以下文章

maven打包的时候会忽略掉空文件夹,怎样配置让它不忽略

带有 git 存储库的 Maven 发布插件忽略 scm.user scm.password

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

Cargo maven 插件 - 启动目标忽略配置,“运行”工作正常

git提交忽略不必要的文件或文件夹

git提交忽略不必要的文件或文件夹