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.java
和 src/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 目标的主要内容,如果未能解决你的问题,请参考以下文章
带有 git 存储库的 Maven 发布插件忽略 scm.user scm.password
Git系列:第七篇-Maven项目下提交时忽略不必要的文件或文件夹