Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [m2e-users] Plugin execution not coveredby lifecycleconfiguration

On Jun 27, 2011, at 7:02 AM, Jochen Wiedmann wrote:

On Mon, Jun 27, 2011 at 3:07 PM, Igor Fedorenko <igor@xxxxxxxxxxxxxx> wrote:

For example, none of "mojo" enhancement
requests we received so far [1] can be supported by neither <ignore/>
nor <execute/> mapping, so improving ways to stores these mappings seems
like a wrong problem to solve.

IMO, the new M2E wants to be really clever. I have to admit, that I
would prefer it to be not so clever while maintaining the feeling that
I can control it.

Really, it attempts not to be clever at all. M2E wants to be told specifically what to do in order for a project to work correctly in an Eclipse workspace. If there is no deterministic way to know that then we consider that an error. We believe it was a mistake not to do this from the beginning because while there are no red markers in your face the unwanted side effects of allowing everything to run puts the M2E project in an unmaintainable state as far as having the resources to field all the problems this non-deterministic behavior causes. M2E must know about the plugins it is attempting to execute to function correctly, and while in the short term this appears painful -- and most users don't see much beyond their own problems, let's be honest -- it is probably not going to take long in practical terms to get coverage for most of the commonly used plugins. Additionally writing Maven plugins for developers who want to support users in Eclipse will have to account for the real support effort in Eclipse if they want the Maven plugins to behave correctly.

At the height of development of M2E Sonatype had close to 10 people working on this plugin full-time to get it to the point where folks like Fred could make the WTP integration work. We cannot know what every Maven plugin does and we know from hard won experience that when problems arise due to plugins misbehaving  M2E is blamed. It is now clear that it is the plugin author, or its community of users who are responsible for making plugins work correctly and cohesively inside of Eclipse. Being inundated with IP work related to clearing all the dependencies -- which is very important -- and doing a massive amount of work on M2E itself we just ran out of time trying to build up a starter inventory of lifecycle mappings. We needed to settle things down and prepare for Indigo. Such is life. 

Igor has been writing documentation so that we can scale the development of Maven plugins that have real support in M2Eclipse. In three months with some effort from the community I believe all highly used Maven plugins will have lifecycle mappings in the market place. We can write some tools to walk Maven Central and build up an inventory of plugins and we can help people understand what needs to be done to make the plugins work correctly in Eclipse. Over time we may be able to create more general solutions (like some changes I have made in the next version of the Maven plugin API) but I think we need to do some learning as a community about what works. As the developers we known absolutely without a doubt that letting anything run is not a viable solution and that collecting information about how plugins execute is. In the future we may be able prevent more problems by analysis of the mapping metadata (for example when two plugins run in the same phase where the same resource is affected) to make things even better.

This is M2E 1.0 and this is the point where the project needs to remain stable pretty much forever and this is where we wanted to start so that in the near feature M2E works as well as possible and continues to work that way. What we were doing previously simply would not allow this.



Jason van Zyl
Founder,  Apache Maven

In short, man creates for himself a new religion of a rational
and technical order to justify his work and to be justified in it.

  -- Jacques Ellul, The Technological Society

Back to the top