sgargan
sgargan

Reputation: 12628

Git Ignores and Maven targets

Anyone know if it is possible to ignore all the instances of a particular directory in a file structure managed by Git?

I'm looking to exclude all the target folders in a Maven project with a number of submodules. I know I can explicitly exclude each of them in a top level .gitignore, but I'd really like to be able to specify a pattern like **/target/* there to have it automatically ignore the instance in sub directories?

Is this possible?

Upvotes: 138

Views: 219848

Answers (7)

jarey
jarey

Reputation: 343

For multi-module repositories, in addition to @Gleidosn answer I would add the following expression to take into consideration the nested target folders:

**/target/

Upvotes: 1

Lova Chittumuri
Lova Chittumuri

Reputation: 3313

For the Spring Tool Suite, Add the following ignore resources to .gitignore file and commit into the repository

*.classpath
*.class
*.prefs
*.jar
*.lst
*.project
*.factorypath
*.original
target/
.settings/
.apt_generated
.sts4-cache
.springBeans

Upvotes: 0

Gleidosn
Gleidosn

Reputation: 301

add following lines in gitignore, from all undesirable files

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

Upvotes: 4

Rajeev Rathor
Rajeev Rathor

Reputation: 1922

I ignore all classes residing in target folder from git. add following line in open .gitignore file:

/.class

OR

*/target/**

It is working perfectly for me. try it.

Upvotes: 2

Tomasz Mularczyk
Tomasz Mularczyk

Reputation: 36179

As already pointed out in comments by Abhijeet you can just add line like:

/target/**

to exclude file in \.git\info\ folder.

Then if you want to get rid of that target folder in your remote repo you will need to first manually delete this folder from your local repository, commit and then push it. Thats because git will show you content of a target folder as modified at first.

Upvotes: 7

baudtack
baudtack

Reputation: 30341

It is possible to use patterns in a .gitignore file. See the gitignore man page. The pattern */target/* should ignore any directory named target and anything under it. Or you may try */target/** to ignore everything under target.

Upvotes: 117

Dominic Mitchell
Dominic Mitchell

Reputation: 12299

The .gitignore file in the root directory does apply to all subdirectories. Mine looks like this:

.classpath
.project
.settings/
target/

This is in a multi-module maven project. All the submodules are imported as individual eclipse projects using m2eclipse. I have no further .gitignore files. Indeed, if you look in the gitignore man page:

Patterns read from a .gitignore file in the same directory as the path, or in any parent directory

So this should work for you.

Upvotes: 244

Related Questions