Difference between intellij Project make and Maven Compile?

JavaEclipseMavenIntellij IdeaIde

Java Problem Overview


When working in maven module, what's the difference between doing in intellij build -> Make Project and Maven Projects -> Root pom -> Compile phase.

Does intellij calls maven? Does both of them compile the sources to the same place? Do they both copy resources files? Why do we need both options? Does intellij download the dependencies automatically and we can just call project make, without using maven compile?

intellij project: two ways of compiling

Java Solutions


Solution 1 - Java

They are actually quite similar in terms of the task they perform which is to compile the source and test paths of the project with javax.tools.JavaCompiler by default.

Does intellij call maven?

No it doesn't by default. Remember that this is just IntelliJ's built in Java compiler and some Java projects don't use maven.

Does both of them compile the sources to the same place?

Yes, they use the same source files to compile if that's what you are asking here.

Do they both copy resources files?

Yes they both copy the resource files to different locations though.

Why do we need both options?

We don't need both options. Maven compile command checks the source code against any syntactical errors which effectively covers the work done by IntelliJ's make option.

Does intellij download the dependencies automatically and we can just call project make, without using maven compile?

Intellij's compiler can be considered as syntax compiler which is why you need maven to handle your project's dependencies.

Solution 2 - Java

No, IntelliJ doesn't call maven, but get all information from the pom.xml e.g. output directories libraries etc.

So don't worry, you can call make from IntelliJ for compiling and running your application. If you have some special goals in your maven build file you can run it from the maven window.

All maven dependencies will be downloaded from IntelliJ an stored in the maven local repository.

Solution 3 - Java

Let's think we have a Project A which is use Maven Project B.

If you had changed B project you have to update this project on A. Then you have to compile B in A.

But if you had changed only A you dont have to compile Maven.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionomer727View Question on Stackoverflow
Solution 1 - JavaKorhan OzturkView Answer on Stackoverflow
Solution 2 - JavachokdeeView Answer on Stackoverflow
Solution 3 - JavahurricaneView Answer on Stackoverflow