【问题标题】:Difference between intellij Project make and Maven Compile?intellij Project make 和 Maven Compile 之间的区别?
【发布时间】:2015-07-21 21:36:08
【问题描述】:

在 maven 模块中工作时,在 intellij build -> Make Project 和 Maven Projects -> Root pom -> Compile 阶段有什么区别。

intellij 调用 maven 吗? 他们都将源代码编译到同一个地方吗? 他们都复制资源文件吗? 为什么我们需要这两种选择? intellij 会自动下载依赖,我们可以直接调用 project make,而不使用 maven compile?

【问题讨论】:

    标签: java eclipse maven intellij-idea ide


    【解决方案1】:

    它们在执行任务方面实际上非常相似,即默认使用 javax.tools.JavaCompiler 编译项目的源和测试路径。

    intellij 调用 maven 吗?

    不,默认情况下不会。请记住,这只是 IntelliJ 内置的 Java 编译器,一些 Java 项目不使用 maven。

    他们是否都将源代码编译到同一个地方?

    是的,如果您在此处询问,他们使用相同的源文件进行编译。

    他们都复制资源文件吗?

    是的,他们都将资源文件复制到不同的位置。

    为什么我们需要这两种选择?

    我们不需要这两种选择。 Maven 编译命令检查源代码是否有任何语法错误,这些错误有效地涵盖了 IntelliJ 的 make 选项所做的工作。

    intellij 是否会自动下载依赖,我们可以直接调用 project make,而不使用 maven compile?

    Intellij 的编译器可以被认为是语法编译器,这就是为什么你需要 maven 来处理你的项目的依赖。

    【讨论】:

    • 当询问“他们是否都将源代码编译到同一个地方?”我的意思是输出位置在哪里?你怎么知道 Intellij 将资源复制到不同的位置?你能详细说明一下吗?
    【解决方案2】:

    不,IntelliJ 不调用 maven,而是从 pom.xml 中获取所有信息,例如输出目录库等

    所以不用担心,您可以从 IntelliJ 调用 make 来编译和运行您的应用程序。 如果您在 maven 构建文件中有一些特殊目标,您可以从 maven 窗口运行它。

    所有 maven 依赖项都将从 IntelliJ 下载并存储在 maven 本地存储库中。

    【讨论】:

    • IntelliJ 启动一个进程,在该进程中它使用嵌入式 Maven 库来下载和解析依赖项,并解析 pom 和其他内容。所以从技术上讲,它调用 Maven,但不是用于编译,也不是通过命令行,而是直接使用 jars。
    • 当然,但它不会将 maven 称为外部程序,这不是问题吗?例如在 gradle 项目中 Intellij 调用 gradle....
    • 是的,但还有最后一个问题Does intellij download the dependencies automatically and we can just call project make, without using maven compile? 你没有回答:)
    • 查看源代码,有一个 maven-jps-plugin 包含编译相关内容的模块,所以我在第一条评论中可能是错误的。一些 IntelliJ 开发人员会告诉我们更多信息。
    【解决方案3】:

    假设我们有一个 Project A,它使用 Maven Project B

    如果您更改了 B 项目,则必须在 A 上更新此项目。然后你必须编译B in A

    但如果您只更改了 A,则不必编译 Maven。

    【讨论】:

      猜你喜欢
      • 2016-06-27
      • 2015-07-27
      • 1970-01-01
      • 1970-01-01
      • 2021-07-23
      • 1970-01-01
      • 2014-07-22
      • 2019-07-29
      • 2014-12-14
      相关资源
      最近更新 更多