Search code examples
eclipsemaven-2m2eclipse

Maven in eclipse query using m2Eclipse


I'm using Maven in Eclipse with the m2Eclipse plugin.

I'm very confused about how this is supposed to build within eclipse.

The on-the-fly compiling works as normal (i.e. as if without maven) so if you have an error it will be highlighted.

But when I want to run a junit for example, any changes to the code are only picked up after I run a maven build command. The Eclipse project clean doesn't seem to work.

Any help in explaining how this is all supposed to work would be greatly appreciated.


Solution

  • The eclipse builder uses simpler logic than maven, so sometimes the things m2eclipse does are just not enough. I usually keep a shell open to issue simple commands before I run unit tests. depending on your setup, here are some commands that might be helpful.

    mvn process-resources
    # This is usually enough when you have
    # changed something in src/main/resources
    

    If you know that the only resource processing needed is maven resource filtering, just call the goal:

    mvn resources:resources
    

    Same for tests:

    mvn processs-test-resources
    

    or

    mvn resources:test-resources
    

    If you need a fuller solution, because perhaps some new code has to be generated etc, then use

    mvn test-compile
    # This will through recursion process the following phases:
    
    validate
    initialize
    generate-sources
    process-sources
    generate-resources
    process-resources
    compile
    process-classes
    generate-test-sources
    process-test-sources
    generate-test-resources
    process-test-resources
    test-compile
    

    So you're getting pretty much everything except the actual unit test execution. Most plugins are smart enough to detect changes and leave unchanged files alone, so mvn test-compile is usually fast enough.

    If you prefer not to use a shell, you can of course bind any of the above phases / goals to m2eclipse Run as... maven build targets.