Git ignora e alvos Maven

117

Qualquer um sabe se é possível ignorar todas as instâncias de um determinado diretório em uma estrutura de arquivos gerenciada por git.

Estou tentando excluir todas as pastas de 'destino' em um projeto maven com vários submódulos. Eu sei que posso excluir explicitamente cada um deles em um .gitignore de nível superior, mas eu realmente gostaria de poder especificar um padrão como ** / target / * lá para que ele ignore automaticamente a instância nos subdiretórios.

Isso é possível?

sgargan
fonte
Com qual configuração você está fazendo este trabalho? /.settings/ ignora apenas 'xxx / .settings / *', não '.settings / *' ou 'xxx / yyy / .settings / *': os padrões de ignorar não parecem ser aplicados recursivamente. Consulte também stackoverflow.com/questions/971465/… .
VonC de

Respostas:

98

É possível usar padrões em um .gitignorearquivo. Veja a página de manual do gitignore . O padrão */target/*deve ignorar qualquer diretório denominado target e qualquer coisa abaixo dele. Ou você pode tentar */target/**ignorar tudo sob o alvo.

baudtack
fonte
4
Obrigado! Aqui, para qualquer outra pessoa, está o conteúdo para um .gitignore pular as suspeitas usuais de maven e eclipse. target / * / target / .metadata tar.gz .classpath .project * /. settings /
sgargan
3
Com qual configuração você está fazendo este trabalho? /.settings/ ignora apenas 'xxx / .settings / *', não '.settings / *' ou 'xxx / yyy / .settings / *': os padrões de ignorar não parecem ser aplicados recursivamente. Consulte também stackoverflow.com/questions/971465/… .
VonC de
6
Para projetos de vários módulos, você pode querer usar ** / target / , mas tome cuidado para não excluir diretórios "target" legítimos nas fontes
Bogdan,
1
/target/**funciona no \.git\info\excludearquivo de um poço.
Abhijeet
Apenas tentei enviar um projeto java com subpacote "target" em um de seus módulos. :(
okutane
222

O .gitignorearquivo no diretório raiz se aplica a todos os subdiretórios. O meu é assim:

.classpath
.project
.settings/
target/

Este é um projeto maven de vários módulos. Todos os submódulos são importados como projetos eclipse individuais usando m2eclipse. Não tenho mais .gitignorearquivos. Na verdade, se você olhar na página de manual do gitignore :

Padrões lidos de um .gitignorearquivo no mesmo diretório que o caminho ou em qualquer diretório pai ...

Portanto, isso deve funcionar para você.

Dominic Mitchell
fonte
5
Essa é uma resposta melhor do que ' / target / '. Ele exclui um diretório onde quer que esteja localizado na árvore de diretórios. Mas não funcionaria para arquivos (consulte stackoverflow.com/questions/971465/… )
VonC
3
se você continuar lendo, ele diz "Esses padrões correspondem em relação à localização do arquivo .gitignore." Sua resposta está errada ...
user1387219
Eu uso essa abordagem e uso "target /" para ignorar todas as pastas de construção do maven, no entanto, tome cuidado para não correr o risco de ignorar o código localizado em pacotes que contêm uma pasta "target" em seu caminho. (Em um projeto com as seguintes classes: src/main/java/org/example/game/archery/bow/LongBow.java e src/main/java/org/example/game/archery/target/Target.java, você não encontraria nada para acertar com seu LongBow com essa configuração .gitignore :-))
Cristiano Costantini
4

Conforme já apontado nos comentários de Abhijeet, você pode simplesmente adicionar linhas como:

/target/**

para excluir o arquivo da \.git\info\pasta.

Então, se você quiser se livrar dessa targetpasta em seu repositório remoto, você precisará primeiro deletar manualmente essa pasta de seu repositório local, fazer um commit e então enviá-la. Isso porque o git mostrará a você o conteúdo de uma pasta de destino modificada a princípio.

Tomasz Mularczyk
fonte
2

Eu ignoro todas as classes que residem na pasta de destino do git. adicione a seguinte linha no arquivo .gitignore aberto:

/ .class

OU

*/alvo/**

Está funcionando perfeitamente para mim. tente.

Rajeev Rathor
fonte
0

adicione as seguintes linhas no gitignore, de todos os arquivos indesejáveis

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