You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Rajeshwar Agrawal (JIRA)" <ji...@apache.org> on 2016/03/18 06:27:33 UTC

[jira] [Comment Edited] (MNG-5523) support actual incremental build

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

Rajeshwar Agrawal edited comment on MNG-5523 at 3/18/16 5:26 AM:
-----------------------------------------------------------------

I was trying to reproduce this, but I was unable to reproduce on Maven v3.2.5.

Here's what I did - 
I created a project with this hierarchy
{code}
parent (root pom packaging project)
\
|
|
|------A (jar, depends on B)
|
|------B (jar)
{code}

Initially - 

Project A
{code:java}
public class Amain{
	public static void main(String args[])
	{
		Bmain obj=new Bmain();
		obj.printstmt("String 1");
	}
}
{code}

Project B
{code:java}
public class Bmain{
	
	//this will throw error during incremental build phase
	// public void printstmt(String str1, 	String str2){
	// 	System.out.println(str1+str2);
	// }

	//this works fine 
	public void printstmt(String str1){
		System.out.println(str1);
	}
}
{code}

After running {code}mvn clean install{code} on the parent root project, it was successful.

Now I changed the Project B main class to 
{code:java}
public class Bmain{
	
	//this will throw error during incremental build phase
	public void printstmt(String str1, 	String str2){
		System.out.println(str1+str2);
	}

	//this works fine 
	// public void printstmt(String str1){
	// 	System.out.println(str1);
	// }
}
{code}

I run {code}mvn install{code} on the parent root project (incremental build) and it was unsuccessful.
The java compiler throws compilation error in project A, which I suppose is the intended behaviour. 
Does this mean that problem has been resolved in v3.2.5 or am I missing something here?

I did the same procedure and try to run the incremental build using reactor options{code}mvn -pl=B -am -amd install{code} on the parent root project. Still got the same results viz. compilation failed during the incremental build.




was (Author: rajeshwaragrawal101@gmail.com):
I was trying to reproduce this, but I was unable to reproduce on Maven v3.2.5.

Here's what I did - 
I created a project with this hierarchy
{code}
parent (root pom packaging project)
\
|
|
|------A (jar, depends on B)
|
|------B (jar)
{code}

Initially - 

Project A
{code:java}
public class Amain{
	public static void main(String args[])
	{
		Bmain obj=new Bmain();
		obj.printstmt("String 1");
	}
}
{code}

Project B
{code:java}
public class Bmain{
	
	//this will throw error during incremental build phase
	// public void printstmt(String str1, 	String str2){
	// 	System.out.println(str1+str2);
	// }

	//this works fine 
	public void printstmt(String str1){
		System.out.println(str1);
	}
}
{code}

After running {code}mvn clean install{code} on the parent root project, it was successful.

Now I changed the Project B main class to 
{code:java}
public class Bmain{
	
	//this will throw error during incremental build phase
	public void printstmt(String str1, 	String str2){
		System.out.println(str1+str2);
	}

	//this works fine 
	// public void printstmt(String str1){
	// 	System.out.println(str1);
	// }
}
{code}

I run {code}mvn install{code} on the parent root project (incremental build) and it was unsuccessful.
The java compiler throws compilation error in project A.

Does this mean that problem has been resolved in v3.2.5 or am I missing something here?



> 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
>
> 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.4#6332)