intellij idea" mvn install"制作项目时自动?

时间:2016-11-01 11:40:35

标签: intellij-idea

我想知道当我点击"构建项目时,Intellij IDEA将如何处理我的Maven项目"?
Intellij将如何使用Maven构建项目?

2 个答案:

答案 0 :(得分:26)

当您执行make install时,Intellij IDEA不会自动执行Build Project。为此,请按以下步骤操作:

enter image description here

Maven Projects标签下(通常位于右侧),选择您希望Intellij在Build -> Make Project之后运行的目标,然后右键单击并选择触发器(例如,在上面的快照中,触发器被选为' Execute After Make'。你可以选择你想要的任何东西。

执行此操作后,Build -> Make Project也会运行mvn clean install

答案 1 :(得分:8)

IntelliJ的构建系统引用了 Maven生态系统的一些提示,但在一天结束时它是一个单独的构建系统。

在IntellIJ中,您有一个项目,包含许多模块。这些都是IntelliJ概念。

IntelliJ模块有责任了解它的依赖项和库是什么。这可以使用IntelliJ语义完成, IntelliJ可以允许其他一些构建系统声明依赖项和库。也就是说:IntelliJ模块可以基于 Maven pom.xml或Gradle' build.gradle

点击"制作"在IntelliJ Java模块上:IntelliJ将检查模块要求的库,并解决模块的依赖关系,以确定其相关模块所​​需的库。

知道库之后:IntelliJ将使用类路径中的所有库调用Javac或Eclipse编译器(无论您配置为Java编译器)。它会输出一个罐子,不是一个Maven的人工制品。

IntelliJ Make将运行mvn compile或类似内容(除非您根据@Ashutosh Jindal's answer明确配置它。

当您为如何构建项目提供权威定义时,为什么IntelliJ会使用自己独立的构建系统?我可以想象出各种各样的原因:

  • Maven通常只输出一个人工制品(源和二进制jar,以及pom.xml),而IntelliJ需要额外的语义和索引来提供其所有IDE智能。在编译过程中执行索引过程是有意义的,因为:如果你逐步进行编译,你可以逐步了解哪些索引也被弄脏了。
  • IDE可以参与编译过程。例如:IntelliJ可以执行"继续出错"使用Eclipse编译器构建。此外,Eclipse编译器可用于仅编译那些已更改的文件(IDE会在您编写代码时监视您,因此他们非常清楚哪些文件被弄脏了)。我听说Maven does incremental compile,但我不知道它的性能如何比较。
  • 为了支持各种构建系统(Ant,Maven,Gradle):IntelliJ最简单的工程选择是依赖于尽可能少的特定于域的语义,并使用它来通知一个IntelliJ特定的构建系统。这允许他们重复使用大量代码,并且几乎没有特定于域的区别。