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
|