【问题标题】:What happens "under the hood" when IntelliJ runs a Maven project?当 IntelliJ 运行 Maven 项目时,“幕后”会发生什么?
【发布时间】:2020-09-07 17:46:43
【问题描述】:

大家都知道将依赖项放入 pom.xml 文件并运行“mvn clean install”的过程。此命令运行时,依赖项的 jar 文件将下载到 .m2 存储库。

当我们使用 IntelliJ 和运行/调试配置窗口运行我们的应用程序时,IntelliJ 如何知道在哪里查找依赖项的 jar 文件? IntelliJ 中的每个 GUI 操作实际上都替换了命令行操作。当我们单击“运行”按钮时,“幕后”提交的命令行操作是什么。我相信类文件是从 java 源文件构建的,但我在运行/调试配置窗口中看不到任何将我们引导到 .m2 目录的线索。

【问题讨论】:

  • 您问题的答案完全取决于您在 IntelliJ 中打开的项目的类型。 Maven 项目将在后台使用捆绑的 Maven 引擎,而 Gradle 项目将使用 Gradle。对于命令行程序,IntelliJ 将扫描类路径以查找依赖项。
  • 假设我想关闭 IntelliJ 并从终端运行我的项目,这是否意味着我必须手动添加 -cp 标志并添加 .m2 文件夹,以便 java 知道在哪里搜索我的依赖项?
  • 也许...如果您不使用 Maven/Gradle/等,那么是的,如果您使用纯 javacjava,那么您需要列出所有 JAR .

标签: java maven intellij-idea jar


【解决方案1】:

您可以在运行工具窗口的第一行看到 -classpath IDE 使用的(或调试,如果您在调试模式下启动)工具窗口。此列表包含您在模块的 Dependencies tab 中看到的条目。

重要提示:它是如此 除非您使用委托运行/构建操作到 Maven(设置(macOS 上的首选项)| 构建、执行、部署 | 构建工具 | Maven | Runner | 将 IDE 构建/运行操作委托给 Maven)或 Gradle(设置(macOS 上的首选项)| 构建、执行、部署 | 构建工具 | Gradle | 使用构建和运行)。然后 IDE 实际使用 Maven(或 Gradle)来运行应用程序。

【讨论】:

    猜你喜欢
    • 2013-04-18
    • 1970-01-01
    • 2016-06-06
    • 1970-01-01
    • 2013-09-08
    • 1970-01-01
    • 2015-09-14
    • 1970-01-01
    • 2015-01-10
    相关资源
    最近更新 更多