Cleaning Maven m2e .cache directory

Garret Wilson picture Garret Wilson · May 8, 2013 · Viewed 89.8k times · Source

My Maven installation (Windows 7 64-bit) has a .cache directory that is almost 3.5GB! It contains only a m2e directory. (I'm running Eclipse 4.3M7 with m2e.) Surely all the things inside aren't needed at present, and moreover I don't even know what this stuff is! I could find no Maven documentation of a .cache directory online.

So what are the .m2/repository/.cache and .m2/repository/.cache/m2e directories? Why do they have so much stuff from years ago? How do I dispose of all the stuff that's not needed anymore?

Answer

JBert picture JBert · May 8, 2013

In contrast to the other answers, make sure to keep .m2/*.xml (your settings) and .m2/repository (not strictly necessary to keep, but Maven will have to download half the Internet again).

Now, as for that .cache folder: if you open Eclipse, M2Eclipse will sometimes run a job akin to "Downloading repository indexes". These indexes allow you to quickly find an artifact using M2E's "Add dependency" wizard if you only know (part of) its artifact id. It needs to put the downloaded index files somewhere, and according to http://dev.eclipse.org/mhonarc/lists/m2e-users/msg02486.html the .cache folder is where they go:

Also note that m2e keeps at least three copies of each repository index. The original .gz files downloaded from remote repositories. A shared lucene instance used to optimize time spent processing gz files. And per-workspace lucene indexes. The first two are stored under local repository .cache/m2e directory, the last one is per-workspace.

The Lucene stuff they're talking about are extra optimized search databases, this makes it faster for M2E to search a given artifact if you only enter a partial artifact id or group id.

If I read http://dev.eclipse.org/mhonarc/lists/m2e-users/msg01708.html correctly then it should be safe to remove them:

m2e caches lucene index in two places. Per-workspace indexes are stored under .metadata/.plugins/org.eclipse.m2e.core/nexus and there is also global cache in ~/.m2/repository/.cache/m2e/${m2e.version}.

Try cleaning the caches and see if the problem goes away.

Keep in mind though that M2E will notice the missing folder the next time you open Eclipse, so be prepared to wait while it downloads all repository indexes again!