I have a Maven project with JavaScript code. There is a special javascript compiler plugin connected to the compile goal in the pom.xml. So when I type "mvn compile" then the JavaScript sources in src/main/javascript are compiled (compressed and obfuscated) and saved into the target/classes directory. On the command line this works great.
But now I want to make the development easier by using Eclipse with the m2eclipse plugin. I want Eclipse to call the compile goal whenever I change a JavaScript file. How can I do this? When I save a JavaScript file then I just see a "AUTO_BUILD" logging line in the maven console and that's it.
In the project preferences it is possible to configure a lifecycle mapping. But for some reason I can only add custom goals to "after clean" and "on resource changed". When I add the "compile" goal to the "resource changed" lifecycle mapping, then the JavaScript files are compiled when I change a resource. So I could put my JavaScript files into the resources folder instead and it would work but this sounds pretty ugly.
It is also working when I tell Eclipse to "clean" my project. Then the compile goal target is called. So the functionality is all there I just want to have it executed when I save a JavaScript file. This must be possible somehow, or not?
Any hints?
As you've noticed, the default goals run on incremental builds in Eclipse are
process-resources
andresources:testResources
. Personally, I don't find ugly to put js file under resources and I would just bind the javascript plugin onprocess-resources
.On full build (after a clean from Eclipse), goals run are
process-test-resources
which is actually a build lifecycle phase that includes thecompile
phase, that's whycompile
get called when you clean your project from Eclipse. But this doesn't solve your issue (running your plugin on save).As I said, I would just put the js file under resources. But there is maybe another option: adding another Builder to the project. Right-click on your project, then Properties > Builders > New > Maven Build and define your plugin goal as goal to run during Auto Build Goals (change or remove the other goals to suit your needs):
alt text http://img694.imageshack.us/img694/2382/screenshot003wo.png
But I prefer the other approach.
since @pascal-thivent answer is outdated (as mentioned in the comments) and hinted by @akostadinov https://www.eclipse.org/m2e/documentation/m2e-execution-not-covered.html :
You have to add a valid maven lifecycle action
Example for a jar which is automatically deployed locally by maven install plugin:
Hint: relates to Maven Project Builder is invoked every time I change a source file (GWT) and as a warning: install typically includes tests if you have included them in your normal maven build cycle