intellij Project make 和 Maven Compile 之间的区别?
Posted
技术标签:
【中文标题】intellij Project make 和 Maven Compile 之间的区别?【英文标题】:Difference between intellij Project make and 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?
【问题讨论】:
【参考方案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。
【讨论】:
以上是关于intellij Project make 和 Maven Compile 之间的区别?的主要内容,如果未能解决你的问题,请参考以下文章
IntelliJ IDEA 创建项目project和module的关系