Git игнорирует цели Maven


117

Кто-нибудь знает, можно ли игнорировать все экземпляры определенного каталога в файловой структуре, управляемой git.

Я хочу исключить все «целевые» папки в проекте maven с рядом подмодулей. Я знаю, что могу явно исключить каждый из них в верхнем уровне .gitignore, но я бы действительно хотел иметь возможность указать там шаблон вроде ** / target / *, чтобы он автоматически игнорировал экземпляр в подкаталогах?

Это возможно?


С какой конфигурацией вы делаете эту работу? /.settings/ будет игнорировать только 'xxx / .settings / *', но не '.settings / *' или 'xxx / yyy / .settings / *': шаблоны игнорирования, похоже, не применяются рекурсивно. См. Также stackoverflow.com/questions/971465/… .
VonC

Ответы:


98

Можно использовать шаблоны в .gitignoreфайле. См. Справочную страницу gitignore . Шаблон */target/*должен игнорировать любой каталог с именем target и все, что находится под ним. Или вы можете попытаться */target/**игнорировать все, что находится под целью.


4
Спасибо! Здесь для всех остальных есть содержимое .gitignore, чтобы пропустить подозреваемых maven и eclipse. target / * / target / .metadata tar.gz .classpath .project * /. settings /
sgargan

3
С какой конфигурацией вы делаете эту работу? /.settings/ будет игнорировать только 'xxx / .settings / *', но не '.settings / *' или 'xxx / yyy / .settings / *': шаблоны игнорирования, похоже, не применяются рекурсивно. См. Также stackoverflow.com/questions/971465/… .
VonC

6
Для многомодульных проектов вы можете использовать ** / target / , но будьте осторожны, чтобы не исключить законные «целевые» каталоги в источниках
Богдан

1
/target/**\.git\info\excludeхорошо работает в файле.
Abhijeet

Просто попытался зафиксировать java-проект с "целевым" подпакетом в одном из его модулей. :(
okutane

222

.gitignoreФайл в корневом каталоге действительно распространяется на все подкаталоги. Мой выглядит так:

.classpath
.project
.settings/
target/

Это в многомодульном проекте maven. Все подмодули импортируются как отдельные проекты eclipse с помощью m2eclipse. Больше .gitignoreфайлов у меня нет . В самом деле, если вы посмотрите на страницу руководства gitignore :

Шаблоны читаются из .gitignoreфайла в том же каталоге, что и путь, или в любом родительском каталоге

Так что это должно сработать для вас.


5
Это лучший ответ, чем « / target / ». Он исключает каталог, где бы он ни находился в дереве каталогов. Но для файлов это не сработает (см. Stackoverflow.com/questions/971465/… )
VonC

3
если вы продолжите читать, он говорит: «Эти шаблоны совпадают относительно местоположения файла .gitignore». Ваш ответ неправильный ...
user1387219

Я использую этот подход и использую «target /», чтобы игнорировать все папки сборки maven, однако будьте осторожны, вы рискуете проигнорировать код, который находится в пакетах, содержащих «целевую» папку на своем пути. (В проекте со следующими классами: src/main/java/org/example/game/archery/bow/LongBow.java и src/main/java/org/example/game/archery/target/Target.javaвы не найдете ничего, что могло бы поразить ваш LongBow с такой конфигурацией .gitignore :-))
Cristiano Costantini

4

Как уже отмечалось в комментариях Абхиджита, вы можете просто добавить строку вроде:

/target/**

чтобы исключить файл в \.git\info\папке.

Затем, если вы хотите избавиться от этой targetпапки в своем удаленном репозитории, вам нужно сначала вручную удалить эту папку из локального репозитория, зафиксировать, а затем нажать на нее. Это потому, что git покажет вам содержимое целевой папки как измененное сначала.


2

Я игнорирую все классы, находящиеся в целевой папке из git. добавьте следующую строку в открытый файл .gitignore:

/ .class

ИЛИ

* / Цель / **

У меня он отлично работает. попытайся.


0

добавить следующие строки в 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/
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.