Putting existing Maven builder at the first position is out of question, that would be to dangerous. But I think the problem is not just this peculiarity with refresh. We have a big project with a lot of files generated. When Java builder compiles the sources for the first time, it generates many thousands of errors. After that, when sources are generated, it has to rebuild many classes, which were already built in the first step. Not very effective.
Is it possible to have two Maven builders - one before the Java builder and one after - and let connectors decide, where they want to run? Two questions here:
1. Is this idea viable at all?
2. I know that you are busy, how difficult would it be to implement another builder for someone without deep knowledge of m2e?
Another idea, which should be easier to implement: make it possible to configure the position of Maven builder, for example in org.eclipse.m2e:lifecycle-mapping plugin. Developers may then try putting Maven builder first and see if it works for them.