Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [m2e-dev] Issue not resolving dependencies when IDE starts

Hi Igor,

I can't see how to use the IMavenProjectFacade to help me retain the project information. If I do this in my code:
  • MavenProject mavenProject = facade.getMavenProject();
  • Add some dependencies to the maven project
    • mavenProject.getDependencies() gets all the new dependencies added programatically
    • I iterate over mavenProject.getDependencies() and add them to the resolveProjectDependencies method's 'requirements' argument (a Set<RequiredCapability>)
  • At this point, the new dependencies show up in the POM editor's dependency heirarchy and resolved dependency lists
But on restart the dependencies I added are gone.

I can't see any methods on the IMavenProjectFacade interface to help with this - I'm getting the project from the facade, but is there something else I should do after that? - something to sync/flush the cached info?

Thanks!
Ben.

On 20/12/2011 9:40 AM, Ben Jones wrote:
Aha thank you, I think that could be the problem!

Currently in resolveProjectDependencies I add to the 'requirements' set, adding in the dynamic dependencies. The dependencies are ones which the _javascript_-maven-plugin (the Maven plugin, not the Eclipse one) dynamically adds to the Maven project - this works fine from the command line but m2e doesn't see these dynamically added dependencies.
    So that the moment, I instantiate an instance of our Maven extension, read the dependencies from it (to avoid having to duplicate the dependency configuration), and then add them to the 'requirements' set. I think if I add them to the facade instead, they may be retained. It should be pretty easy to try, we will post back and let you know how it goes.

Thanks again,
Ben.

On 20/12/2011 9:34 AM, Igor Fedorenko wrote:
Let me rephrase my question.

What code requires those dependencies?

How does that code access those dependencies?

And what triggers execution of that code?


IMavenProjectFacade provides both persistent cache of frequently used
MavenProject attributes, including project dependencies. It also
provides a mechanism to lazy load and cache in-memory MavenProject
instance. This is the interface you want to use from your code.

--
Regards,
Igor

On 11-12-19 5:25 PM, Ben Jones wrote:
Thanks for the response Igor.

The dynamically added dependencies aren't retained when the workspace
restarts - these are dependencies which we add in programatically from
resolveProjectDependencies().

Regards,
Ben.

On 19/12/2011 10:51 PM, Igor Fedorenko wrote:
Why do you need to read MavenProject instance of workspace restart? It
is very expensive from performance point of view, especially for large
workspaces, and m2e tries pretty hard to delay reading MavenProject
instances on startup. Resources folders and Maven dependencies classpath
container are expected to survive workspace restart.

--
Regards,
Igor

On 11-12-15 12:45 AM, Ben Jones wrote:
Hi,

I've been working with Christopher on the _javascript_-maven-tools project
and have implemented the first version of our m2e plugin which provides
IDE support for our _javascript_-maven-plugin [1], following on from the
direction Igor gave Chris in their recent discussion.

I've got most things working now using the lifecycleMappings and
lifecycleMappingsMetadataSource extension points; we get the dynamically
configured dependencies resolved via m2e and we get dynamically
configured resource folders visible in Eclipse as source folders.
     There is one major issue remaining and I'm hoping someone may be
able to point us in the right direction - when you start the IDE with an
open maven project which uses the _javascript_-maven-plugin extension,
neither the ILifecycleMapping.configure() method or the
AbstractMavenDependencyResolver.resolveProjectDependencies() method are
called, so none of our custom project configuration happens. The
workaround is to manually right-click on the project and select "Maven
>  Update Project Configuration".
     I note that when if the project is closed when you start the IDE,
when you open the project these methods are called and configuration
occurs as expected. But I'm not sure of the right place to allow us to
run our plugin code when the editor is started with an open project.
     You can see the project source online here [2] if that helps (and
the main class is here [3]).

Any pointers as to the right way to do this would be appreciated.

Thanks,
Ben Jones.

[1]
http://mojo.codehaus.org/_javascript_-maven-tools/_javascript_-maven-plugin/index.html

[2]
https://fisheye.codehaus.org/browse/mojo/trunk/mojo/_javascript_-maven-tools/_javascript_-ide-helpers/_javascript_-maven-plugin-m2e/

[3]
https://fisheye.codehaus.org/browse/mojo/trunk/mojo/_javascript_-maven-tools/_javascript_-ide-helpers/_javascript_-maven-plugin-m2e/src/org/codehaus/mojo/_javascript_/m2e/_javascript_MavenToolsLifecycleMapping.java?r=15572




_______________________________________________
m2e-dev mailing list
m2e-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/m2e-dev
_______________________________________________
m2e-dev mailing list
m2e-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/m2e-dev



_______________________________________________
m2e-dev mailing list
m2e-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/m2e-dev
_______________________________________________
m2e-dev mailing list
m2e-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/m2e-dev



_______________________________________________
m2e-dev mailing list
m2e-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/m2e-dev

Back to the top