Difference with M2Eclipse
At the beginning, I'm a user of M2Eclipse. And when in my work I had to prepare a new new java development environnement, based on Eclipse, I naturally included M2Eclipse in our bundle. After some tests, we found some bugs, and because we had no choice, found some workarounds.
When we were ready, we deployed our work, and after some times, the team which used this new environnement declared that they wouldn't use the M2Eclipse plugin and explained us all problems they found
- difference between M2Eclise 0.0.11 and Maven 2.0.7 in dependency resolution
- When eclipse starts with many open Maven projects, often the local repository was destroyed, are invalid by the M2Eclipse, and the user must delete his local repository, and restart each project one by one
- some minors bugs
After I read this conclusion, I examined the source code of M2Eclipse project, and I found it very complex for our needs. I read comments on forums, and Jira, and because I didn't understand the rationale behind the complicated code, I tried to rework this plugin by dropping all the complicated code.
Goals of M4Eclipse
The goals of this project isn't to take place of long term "big players" like M2Eclipse or iQ4E, but just to solve the immediate problems to have a working eclipse plugin now.
M2Eclipse and Q4E are based on maven-embedder 2.1-SNAPSHOT. And this embedder does not always have the same dependencies resolution as Maven 2.0.7.
In my work, I need a Maven Eclipse plugin wich works fine with Maven 2.0.x (at this moment 2.0.7), so I forked M2Eclipse, simplified it, based it on Maven 2.0.7 (and corrected some bugs). And publish this temporary plugin.
At this moment, my little fork works fine, and gives the same dependency tree like Maven 2.0.7.
Solved bugs from M2Eclipse
This bugs list is not complete, it's only the bug list that my customers explained to me.
- doesn't manage correctly parent pom: parent pom aren't resolved before pom itself
- doesn't manage (completely) the settings file: because M2Eclipse doesn't manage correctly parent pom, we try to put in settings file where are our repository, but this settings isn't used by the plugin
- trouble with snapshot unique version: M2Eclipse manages only non unique version snapshots (ends with -SNAPSHOT)
- at the start of Eclipse, if many Maven projects are opened, often the local repository will be invalid. The problem is that Maven doesn't manage concurrent access to local repository, and when 2 threads try to modify the same file, the file will be corrupted at the end. In our case, all our parent pom are snapshot, using the same version number. So when we download a project, often we use the same parent pom, and sometimes it destroys the file stored in the local repository
this bug list are very basic, and not complete. We can add some bugs with search dependency feature, and many others, but it is not essential for the correct use of the dependency management in Eclipse.