On 2/17/2014, 11:24, Grzegorz Słowikowski wrote:
Hi All I have Maven plugin defining custom "play" packaging (for Play! Framework 1.x http://www.playframework.com/) applications. In latest release I added M2Eclipse integration (see http://maven-play-plugin.googlecode.com/svn/tags/plugin-1.0.0-beta7/play-maven-plugin/src/main/resources/META-INF/m2e/lifecycle-mapping-metadata.xml) I've read about BuildContext usage here: https://wiki.eclipse.org/M2E_compatible_maven_plugins , but I have some questions related to this functionality. 1. I wanted to test/debug "buildContext.refresh( someFile )" so I ran Maven builds inside Eclipse, but I've always had the default "org.sonatype.plexus.build.incremental.DefaultBuildContext" implementation when I've debugged my code. What should I do to get M2Eclipse implementation of BuildContext interface: org.eclipse.m2e.core.internal.builder.EclipseBuildContext org.eclipse.m2e.core.internal.builder.EclipseIncrementalBuildContext ?
How do you inject BuildContext instance in your mojo? Using plugin-tools @Component, plexus @Requirement or jsr330 @Inject all should inject instance of EclipseBuildContext inside m2e.
2. Sources and resources are processed by M2E completely differently. Is calling "refresh" important for sources, resources or both, and why (why not calling "refresh()" can lead to infinite rebuilds)?
During project import and configuration update m2e needs to configure workspace project sources and resources folders. To do this, m2e runs maven build with empty resource delta and expects mojos do not produce any outputs. If your mojo does not properly use BuildContext API it will do more work than necessary, will create filesystem resources that may confuse other Eclipse workspace builders. Mojo execution may actually fail if it depends on outputs of other mojo executions. During workspace build mojo needs to check if its inputs have changed. Eclipse runs build on every workspace file modification, so if the mojo generates its outputs unconditionally, this will trigger new build, which will result in unconditional generation of mojo outputs and so on. Calling "refresh" also makes mojo outputs visible to eclipse workspace and other builders. Eclipse java compiler, for example, will not see sources generated by the mojo if they are not refreshed in the workspace. -- Regards, Igor
I have some more questions, but I would like to receive responses for the above two first. Thank you in advance. Regards Grzegorz Slowikowski _______________________________________________ m2e-users mailing list [email protected] https://dev.eclipse.org/mailman/listinfo/m2e-users
_______________________________________________ m2e-users mailing list [email protected] https://dev.eclipse.org/mailman/listinfo/m2e-users
