Hello,
 
first of all I have to correct myself M2E is currently using the 
'org.sonatype.plexus:plexus-build-api'. I looked that up incorrectly. Thank you 
for mentioning that and for the historical background.
 
> What will happen tomorrow, if Maven is approached by the NetBeans or IDEA
> team with some text like
> "What a nice tool you have here, it would be a shame to let something
> happen to it, right? So, you should integrate this library to make it work
> in our IDE...".
>
> I am pretty much sure (does not have exact numbers) that the IDE
> landscape DID change quite a bit since 2009.
 
I have to say that I disagree with your summary of my initial mail.
For clarification, the intention of my mail was to ask if there is a general 
interest in providing an API (anywhere) at maven that *any* IDE can use and 
even other maven tools as Christoph already said.
I did not request to use an IDE specific API, not even any specific API, I just 
mentioned the one M2E is currently using and how it is using it as an example 
to make the purpose more clear. We would be happy with any suitable API.
And as the GAV indicates, the plexus-build-api is not Eclipse/M2E specific and 
not maintained by Eclipse/M2E. M2E is just the only user, as far as I know, and 
therefore it is often falsely labeled as being for M2E-integration.
But in fact any other IDE can use that as well. I have not checked other IDEs 
and therefore don't know if or why they don't use it or if they have better 
approaches. But I hoped to maybe find that out as part of this discussion.
If you already have (plans for) a "Maven API" in Maven 4 that goes in that 
direction, that's great.
 
The current approach of M2E to have one Eclipse-M2E specific connector per 
Maven plug-in simply does not scale well and maybe other IDEs face the same 
issue?
Assuming that other IDEs work in similar ways it means that there would be one 
such 'connector' respectively special treatment of that plugin per IDE for each 
Maven-Plugin, that is reasonably executed during workspace builds.
Therefore we thought it would be better if Plugins of Maven(-Core), but also 
third-Party Plugins, would operate on some form of 
abstract-FileSystem/BuildContext instead of performing file-system operation 
directly or maintaining own logics to determine if something changed. Each IDE 
can then provide one corresponding IDE-specific context implementation that is 
injected when the plugins are executed as part of the IDE build. But the N 
connectors respectively the special treatment per IDE and Plugin would not be 
necessary. In total there would be much less code and there would be less code 
that would have to be synchronized in case a Maven plugins changes.
All that at the 'cost' of performing (mainly) file-system operations 
differently. If the API is well designed I expect/hope that it won't be more 
complicated than today, just different.
 
> I find it hardly justifiable to make maven committers perform extra work
> (of integrating and maintaining) something that does not give them any
> benefit.
 
Improved integration for any IDE is a benefit for me.
And personally (and I think I speak for the other M2E committers as well) I 
would rather contribute adjustments of Plugins to Maven than maintaining 
Eclipse specific connectors at M2E. That way I think my freetime, in which I 
mainly contribute to Eclipse and M2E is used most effectively. And if other 
IDEs can use that API as well, there is potential that their maintainers 
contribute as well.
 
> Sounds like annotation processor abstraction but more general.
> Overall Im not sure the gain for anyone - IDE can get it with a
> classfiletransformer hacked on classrealm and just a dumb javaagent already
 
Thanks for that suggestion, we have not yet considered that.
But wouldn't that require to be perpared for all different patterns of 
file-system modifications used in any class of the realm to be able to 
manipluate the bytecode accordingly?
Maybe I have not yet fully understand the topic, but for me that sounds like 
many Mojos/Pojos have to be considered/tested individually by devs again.
 
> For the IDE to be notified, why not using a FileWatcher on the project
>  folder and see if anything has changed ?
 

Do you know if this is implemented based on real file-system events on all 
major OS?
If polling is used, a FileWatcher probably has a bad performance when there are 
many/large projects in the workspace.
 
 
Hannes
 
 

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
For additional commands, e-mail: dev-h...@maven.apache.org

Reply via email to