在制作项目时,intellij会自动想到"mvn install"吗?

guo*_*guo 21 intellij-idea

谷歌搜索后我找不到任何答案.我是Maven世界的新手.

另外,我想知道当我点击"构建项目"时,Intellij IDEA会对我的Maven项目做些什么?Intellij如何使用Maven构建项目?

Ash*_*dal 27

Intellij IDEA make install在你做的时候不会自动执行Build Project.为此,请按以下步骤操作:

在此输入图像描述

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

在这样做之后,一个Build -> Make Project也将运行mvn clean install.

  • 下次我忘了,查看 - >工具窗口 - > Maven项目 (4认同)

Bir*_*abs 9

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的答案.

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

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