Uploaded image for project: 'Maven'
  1. Maven
  2. MNG-5523

support actual incremental build

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Open
    • Major
    • Resolution: Unresolved
    • None
    • None
    • None

    Description

      Background:

      We have project structure of around 200 project in the maven tree, every single build takes around 13 minute of time (clean, compile, test install, deploy)

      With current version of maven 3.1, you can skip clean phase and it will do incremental build, which is not bullet proof incremental build actually

      Problem example

      ----------root (module)
      	    \
      	    |
      	    |---foo (jar project)
      	    |
      	    |---bar (jar project, it consumes foo as dependency)
      

      before

      public class Foo{
      	public static void sayHello(){
      		System.out.println("hello from foo");
      	}
      }
      
      public class Bar{
      	public static void main(String arg[]){
      		Foo.sayHello();
      	}
      }
      

      I do mvn clean install from root module, it would go successful, I launch the main() method of Bar now, it will be succesful

      now I modify sayHello() to

      	public static void sayHello(String name){
      		System.out.println("hello from foo to " + name);
      	}
      

      and I execute mvn install (incremental build) from root module, it will still compile and execute successfully because it takes previously built artifact for Foo at compile phase, now if I attempt to run it in IDE or in a packaged build it will fail with

      Exception in thread "main" java.lang.NoSuchMethodError:
      

      Proposal:

      • somewhere in pre execution phase, it needs to calculate the modified source and artifacts and it should be able to detect all the consumers in dependency tree (compile, runtime, test all scopes) and flag all the artifacts to treat as modified and it should re do build for those
      • all the maven plugins should support incremental build as well
      • plugin needs to be marked to execute incrementally by adding a boolean parameter to AbstractMOJO to declare that plugin execution needs to be calculated in effective incremental way
      • all plugins which are marked as incremental needs to take the same approach as mentioned in first point
      • also in parallel build when it fans out in multiple threads it should have knowledge of what plugins to execute effectively

      It would be totally useful to have this feature corrected

      Some other people who wants this as well

      Also See

      Thanks!
      Jigar

      Attachments

        1. parent.zip
          9 kB
          Jigar Joshi

        Issue Links

          Activity

            People

              Unassigned Unassigned
              jigar.joshi Jigar Joshi
              Votes:
              6 Vote for this issue
              Watchers:
              10 Start watching this issue

              Dates

                Created:
                Updated: