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?


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.


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ê.


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.


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.


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/
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.