Git ignoruje cele Maven i Maven

117

Każdy wie, czy można zignorować wszystkie wystąpienia określonego katalogu w strukturze plików zarządzanej przez git.

Chcę wykluczyć wszystkie foldery „docelowe” w projekcie maven z kilkoma modułami podrzędnymi. Wiem, że mogę jawnie wykluczyć każdy z nich w .gitignore najwyższego poziomu, ale naprawdę chciałbym móc tam określić wzorzec, taki jak ** / target / *, aby automatycznie ignorował instancję w podkatalogach?

czy to możliwe?

sgargan
źródło
W jakiej konfiguracji to działa? /.settings/ ignorowałoby tylko „xxx / .settings / *”, a nie „.settings / *” lub „xxx / yyy / .settings / *”: wzorce ignorowania nie wydają się być stosowane rekurencyjnie. Zobacz także stackoverflow.com/questions/971465/… .
VonC

Odpowiedzi:

98

W .gitignorepliku można używać wzorców . Zobacz stronę podręcznika gitignore . Wzorzec */target/*powinien ignorować każdy katalog o nazwie target i wszystko pod nim. Możesz też spróbować */target/**zignorować wszystko, co znajduje się pod celem.

baudtack
źródło
4
Dzięki! Tutaj dla każdego innego, jest zawartość dla .gitignore, aby pominąć zwyczajnych podejrzanych o maven i eclipse. target / * / target / .metadata tar.gz .classpath .project * /. settings /
sgargan
3
W jakiej konfiguracji to działa? /.settings/ ignorowałoby tylko „xxx / .settings / *”, a nie „.settings / *” lub „xxx / yyy / .settings / *”: wzorce ignorowania nie wydają się być stosowane rekurencyjnie. Zobacz także stackoverflow.com/questions/971465/… .
VonC
6
W przypadku projektów wielomodułowych możesz chcieć użyć ** / target / , ale uważaj, aby nie wykluczyć legalnych katalogów „docelowych” w źródłach
Bogdan
1
/target/**działa w \.git\info\excludepliku dobrze.
Abhijeet
Właśnie próbowałem zatwierdzić projekt Java z podpakietem docelowym w jednym z jego modułów. :(
okutane
222

.gitignorePlik w katalogu głównym ma zastosowanie do wszystkich podkatalogów. Mój wygląda tak:

.classpath
.project
.settings/
target/

To jest w wielomodułowym projekcie Maven. Wszystkie podmoduły są importowane jako indywidualne projekty zaćmień przy użyciu programu m2eclipse. Nie mam dalszych .gitignoreplików. Rzeczywiście, jeśli spojrzysz na stronę podręcznika gitignore :

Wzorce odczytywane z .gitignorepliku w tym samym katalogu co ścieżka lub w dowolnym katalogu nadrzędnym

Więc to powinno działać dla Ciebie.

Dominic Mitchell
źródło
5
To lepsza odpowiedź niż „ / target / ”. Nie wyklucza katalogu, gdziekolwiek się on znajduje w drzewie katalogów. Ale to nie zadziała dla plików (patrz stackoverflow.com/questions/971465/… )
VonC
3
jeśli będziesz kontynuować czytanie, pojawi się komunikat „Te wzorce pasują do lokalizacji pliku .gitignore”. Twoja odpowiedź jest błędna ...
user1387219
Używam tego podejścia i używam „target /”, aby zignorować wszystkie foldery kompilacji maven, jednak należy uważać, aby zignorować kod, który znajduje się w pakietach zawierających folder „docelowy” w swojej ścieżce. (W projekcie z następującymi klasami: src/main/java/org/example/game/archery/bow/LongBow.java i src/main/java/org/example/game/archery/target/Target.java, nie znalazłbyś nic do uderzenia swoim LongBow z taką konfiguracją .gitignore :-))
Cristiano Costantini
4

Jak już wskazano w komentarzach Abhijeeta, możesz po prostu dodać wiersz w stylu:

/target/**

aby wykluczyć plik w \.git\info\folderze.

Następnie, jeśli chcesz pozbyć się tego targetfolderu w swoim zdalnym repozytorium, musisz najpierw ręcznie usunąć ten folder z lokalnego repozytorium, zatwierdzić, a następnie wypchnąć. Dzieje się tak, ponieważ git pokaże zawartość folderu docelowego, tak jak zmodyfikowano na początku.

Tomasz Mularczyk
źródło
2

Ignoruję wszystkie klasy znajdujące się w folderze docelowym z gita. dodaj następujący wiersz w otwartym pliku .gitignore:

/ .class

LUB

*/cel/**

U mnie działa idealnie. Spróbuj.

Rajeev Rathor
źródło
0

dodaj następujące wiersze w gitignore, ze wszystkich niepożądanych plików

/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/
Gleidosn
źródło