【问题标题】:Will intellij idea "mvn install" automatically when make the project?制作项目时会自动使用intellij idea“mvn install”吗?
【发布时间】:2016-11-01 11:40:35
【问题描述】:

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

【问题讨论】:

    标签: intellij-idea


    【解决方案1】:

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

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

    完成此操作后,Build -> Make Project 也将运行 mvn clean install

    【讨论】:

    • 谢谢,我已经找了好几个小时了。您的屏幕截图中的“maven 项目”选项卡没有出现在我的 GUI 中,我正在疯狂地旋转我的轮子。
    • 下次忘记了,查看 -> 工具窗口 -> Maven 项目
    【解决方案2】:

    IntelliJ 的构建系统参考了 Maven 生态系统以获得一些提示,但归根结底,它是一个单独的构建系统。

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

    IntelliJ 模块有责任了解其依赖项和库。这可以完全使用 IntelliJ 语义来完成, IntelliJ 可以允许其他构建系统声明依赖项和库。也就是说:IntelliJ Module可以基于一个Mavenpom.xml或者Gradle的build.gradle

    当您在 IntelliJ Java 模块上单击“生成”时:IntelliJ 将检查您的模块要求哪些库,并解析您的模块的依赖关系以确定其依赖的模块要求哪些库。

    一旦知道这些库:IntelliJ 将调用 Javac 或 Eclipse 编译器(无论您已配置为 Java 编译器中的哪一个),所有这些库都位于类路径中。它会输出一个 jar,不是 Maven artefact。

    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 特定的构建系统。这使他们能够重用大量代码,并且几乎没有特定领域的差异。

    【讨论】:

      猜你喜欢
      • 2013-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-30
      • 2013-07-27
      • 2017-07-21
      相关资源
      最近更新 更多