[ 
https://issues.apache.org/jira/browse/MNG-5523?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15886627#comment-15886627
 ] 

Jigar Joshi commented on MNG-5523:
----------------------------------

Interesting read : https://blog.gradle.org/incremental-compiler-avoidance

> support actual incremental build
> --------------------------------
>
>                 Key: MNG-5523
>                 URL: https://issues.apache.org/jira/browse/MNG-5523
>             Project: Maven
>          Issue Type: Improvement
>          Components: Bootstrap & Build, Performance
>            Reporter: Jigar Joshi
>         Attachments: parent.zip
>
>
> h2. 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
> h2. Problem example
> {code}
> ----------root (module)
>           \
>           |
>           |---foo (jar project)
>           |
>           |---bar (jar project, it consumes foo as dependency)
> {code}
> before
> {code}
> public class Foo{
>       public static void sayHello(){
>               System.out.println("hello from foo");
>       }
> }
> public class Bar{
>       public static void main(String arg[]){
>               Foo.sayHello();
>       }
> }
> {code}
> 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
> {code}
>       public static void sayHello(String name){
>               System.out.println("hello from foo to " + name);
>       }
> {code}
> 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 
> {code}
> Exception in thread "main" java.lang.NoSuchMethodError:
> {code}
> h2. 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
>  - http://stackoverflow.com/questions/6281699/maven-incremental-building
>  - 
> http://stackoverflow.com/questions/8918165/does-maven-support-incremental-builds
> *Also See*
>  - http://jira.codehaus.org/browse/MCOMPILER-213
>  - 
> http://blog.jetbrains.com/teamcity/2012/03/incremental-building-with-maven-and-teamcity/
> Thanks!
> Jigar



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to