I’ve been using Maven on and off for a few years now. It’s a great tool. It makes a lot of the drudgery of creating a build process for a Java application really easy. However, there are still a few things that cause me grief.  The bugbear of the day is around the project structure.

Getting the project structure right goes a long way to ensuring that Maven is beneficial to your project and not a hindrance.  Unfortunately, it takes quite a bit of experience to get a project laid out correctly and often you don’t know when you start your project what it will look like after a bit of development.   You might decide that you need to split it into a few distinct modules, which means changing the project structure.  After a bit longer, you might need to move those modules around a bit and that is when the headache starts.  If you have a team of developers working on the project and you need to move a module to a different level in the hierarchy,  this can mean that everyone has to synchronise their workspace, then delete and reimport your project in Eclipse, which is a pain.