【问题标题】:IntelliJ: Build > Rebuild Project menu item versus Maven clean installIntelliJ:构建 > 重建项目菜单项与 Maven 全新安装
【发布时间】:2018-10-21 07:44:46
【问题描述】:

对于IntelliJ 2018 年Maven 驱动的项目,我应该选择什么时候使用……

  • IntelliJ 2018.1 菜单项Build > Rebuild Project
  • Maven 面板的 cleaninstall 生命周期项

什么情况下合适?

我的情况是使用vaadin-archetype-application-multimodule Vaadin archetypeVaadin 8 应用程序。

问题Does IntelliJ Build > Rebuild Project invoke maven? 有一个single Answer 表示Rebuild Project 根本不调用Maven。但没有给出何时使用路线与其他路线的指导。

【问题讨论】:

    标签: java maven intellij-idea build


    【解决方案1】:

    好吧,如果您在 pom.xml 文件中进行实质性更改(新插件、多模块项目中的新模块),您最好运行“mvn clean install”。我个人从不在 Maven 项目中使用“重建项目”。通常我只是“制作”项目以便更新类文件,或者我开始一个真正的 Maven 构建以获取新的/更新的依赖项。

    第三个重要选项(对我而言)是“重新导入所有 Maven 项目”选项,如果纯 Maven 构建运行良好,但 IntelliJ 仍然认为您的项目中有问题,这非常有用。

    【讨论】:

    • 通常你应该使用mvn clean verify,通常不需要安装。
    • 正确。在一些蹩脚的设置多模块项目中,我使用“安装”只是为了在构建其中一个模块时过上更轻松的生活。另一方面,“安装”甚至会在其他模块发生更改而您不重新构建此模块时产生奇怪的副作用。因此,默认情况下,坚持“验证”而不是“安装”。好点,@khmarbaise
    • 如果你有糟糕的多模块项目而不是那些项目是错误的......
    • @khmarbaise 以及如果您在没有install 的情况下在您的仓库中没有依赖项,您将如何处理jetty:runverifyinstall 相比毫无用处,可能只适用于慢速 CPU。
    【解决方案2】:

    当您有一个多模块 Maven 项目并且:

    • 通过 IntelliJ (Main.java) 以编程方式启动您的测试和应用程序:

      您根本不需要使用 Maven,无需清理,无需安装,只需 Make。和Rebuild 当项目搞砸时。

      当您更改依赖项或有人将新的依赖项快照部署到您的存储库时,请单击 Reimport。 如果 IntelliJ 拒绝下载快照,请尝试 mvn clean install

      你为什么要这么做?它更快,更用户友好。

    • 在 IntelliJ 中通过 Maven 启动您的测试和应用程序 (mvn jetty:run):

      您必须安装作为您启动应用程序的模块的依赖项 (mvn jetty:run) 的模块,因为 Maven 不使用您的编译输出作为依赖项,而是从您的远程/本地存储库中获取一个工件。对于这种情况Make/Rebuild 没用,你必须使用mvn (clean) install

      如果您仅在运行mvn jetty:run 的模块中进行了更改,则无需使用package/install,但有时您必须使用cleanRebuild,因为Maven 不会删除已删除的资源.

      Make 适合热插拔 - 因此,将您开发和依赖的所有 Maven 项目导入到单个 IntelliJ 项目中是个好主意。最初的Rebuild 很方便,因为没有它,Make 将编译整个项目而不是只更改类,然后可能会导致热交换失败或者花费太长时间。 或者您可以在运行应用程序之前单击Make,但它可能会在编译输出中留下一些由 Maven 创建的旧资源,Rebuild 会处理这些。

      您还可以将应用服务器配置为在检测到来自 MakeRebuild 的更新文件时重新启动/重新加载 - 当然比重新启动 JVM 或通过 Maven 编译要快,但您可能希望禁用它并仅使用热插拔,如果你做一些小改动,它仍然会更快。

    无论哪种方式,您都可能想看看Maven Helper plugin for IntelliJ,它会让大型项目的事情变得更容易。

    【讨论】:

      猜你喜欢
      • 2023-01-28
      • 2020-08-29
      • 1970-01-01
      • 2019-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-07
      相关资源
      最近更新 更多