Git Ignores y objetivos de Maven

117

Cualquiera sabe si es posible ignorar todas las instancias de un directorio en particular en una estructura de archivos administrada por git.

Estoy buscando excluir todas las carpetas de 'destino' en un proyecto maven con varios submódulos. Sé que puedo excluir explícitamente cada uno de ellos en un .gitignore de nivel superior, pero realmente me gustaría poder especificar un patrón como ** / target / * allí para que ignore automáticamente la instancia en los subdirectorios.

es posible?

sgargan
fuente
¿Con qué configuración estás haciendo que esto funcione? /.settings/ solo ignoraría 'xxx / .settings / *', no '.settings / *' o 'xxx / yyy / .settings / *': los patrones ignorados no parecen aplicarse de forma recursiva. Consulte también stackoverflow.com/questions/971465/… .
VonC

Respuestas:

98

Es posible utilizar patrones en un .gitignorearchivo. Consulte la página de manual de gitignore . El patrón */target/*debe ignorar cualquier directorio llamado target y cualquier cosa debajo de él. O puede intentar */target/**ignorar todo lo que está bajo el objetivo.

baudtack
fuente
4
¡Gracias! Aquí para cualquier otra persona, está el contenido de un .gitignore para omitir a los sospechosos ususales de maven y eclipse. target / * / target / .metadata tar.gz .classpath .project * /. settings /
sgargan
3
¿Con qué configuración estás haciendo que esto funcione? /.settings/ solo ignoraría 'xxx / .settings / *', no '.settings / *' o 'xxx / yyy / .settings / *': los patrones ignorados no parecen aplicarse de forma recursiva. Consulte también stackoverflow.com/questions/971465/… .
VonC
6
Para proyectos de varios módulos, es posible que desee utilizar ** / target / , pero tenga cuidado de no excluir directorios legítimos "target" en las fuentes
Bogdan
1
/target/**funciona en \.git\info\excludearchivo un pozo.
Abhijeet
Intenté enviar un proyecto java con el subpaquete "target" en uno de sus módulos. :(
okutane
222

El .gitignorearchivo en el directorio raíz no se aplica a todos los subdirectorios. El mío se ve así:

.classpath
.project
.settings/
target/

Esto es en un proyecto maven de varios módulos. Todos los submódulos se importan como proyectos de eclipse individuales utilizando m2eclipse. No tengo más .gitignorearchivos. De hecho, si miras en la página del manual de gitignore :

Los patrones se leen desde un .gitignorearchivo en el mismo directorio que la ruta, o en cualquier directorio principal ...

Entonces esto debería funcionar para ti.

Dominic Mitchell
fuente
5
Esa es una mejor respuesta que ' / target / '. Excluye un directorio donde sea que esté ubicado en el árbol de directorios. Pero no funcionaría para archivos (consulte stackoverflow.com/questions/971465/… )
VonC
3
si continúa leyendo, dice "Estos patrones coinciden en relación con la ubicación del archivo .gitignore". Su respuesta es incorrecta ...
user1387219
Utilizo este enfoque y uso "target /" para ignorar todas las carpetas de compilación de maven, sin embargo, tenga cuidado de que se arriesga a ignorar el código que se encuentra en paquetes que contienen una carpeta "target" en su ruta. (En un proyecto con las siguientes clases: src/main/java/org/example/game/archery/bow/LongBow.java y src/main/java/org/example/game/archery/target/Target.java, no encontraría nada que golpear con su LongBow con tal configuración .gitignore :-))
Cristiano Costantini
4

Como ya se señaló en los comentarios de Abhijeet, puede agregar una línea como:

/target/**

para excluir el archivo en la \.git\info\carpeta.

Luego, si desea deshacerse de esa targetcarpeta en su repositorio remoto, primero deberá eliminar manualmente esta carpeta de su repositorio local, confirmar y luego empujarla. Eso es porque git le mostrará el contenido de una carpeta de destino modificada al principio.

Tomasz Mularczyk
fuente
2

Ignoro todas las clases que residen en la carpeta de destino de git. agregue la siguiente línea en el archivo .gitignore abierto:

/ .class

O

*/objetivo/**

Me está funcionando perfectamente. intentalo.

Rajeev Rathor
fuente
0

agregue las siguientes líneas en gitignore, de todos los archivos no deseados

/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
fuente