IntelliJ IDEA 中的“模块依赖”和“库”有啥区别?

Posted

技术标签:

【中文标题】IntelliJ IDEA 中的“模块依赖”和“库”有啥区别?【英文标题】:What is the difference between "Module Dependencies" and "Libraries" in IntelliJ IDEA?IntelliJ IDEA 中的“模块依赖”和“库”有什么区别? 【发布时间】:2012-08-29 11:34:06 【问题描述】:

当您想在项目中添加.jar 库时,IntelliJ IDEA 中的“模块依赖项”和“库”有什么区别?另外,当您将 .jar 库添加到 IntelliJ IDEA 中的“模块依赖项”时,“导出”复选框是什么?

在每种方式中,在创建新生成的.jar 文件时,包含的.jar 库中的类和代码如何集成到您的最终项目(代码)中?

【问题讨论】:

“库”是指“项目结构”窗口中带有“库”标题的部分! 【参考方案1】:

"In IntelliJ IDEA, libraries can be defined at three levels: global (available for many projects), project (available for all modules within a project), and module (available for one module)."

全局库通过项目结构\平台设置\全局库设置 项目库是通过项目结构\项目设置\库设置的 模块库是通过 Project Structure\Project Settings\Modules\Dependencies 设置的

【讨论】:

这个答案和 ONLY 这个答案正确地解决了这个问题。 +1 这个答案没有解决导出功能。但我同意,从引导我到这里的问题标题来看,这个答案提供了我正在寻找的知识。虽然其他答案考虑了术语“模块依赖项”和“库”的一般含义,但这个答案考虑了它们在 IntelliJ 的 UI 中的含义(Project Structure > Modules > Dependencies vs. 项目结构 > 库).【参考方案2】:

模块依赖项是模块文件引用的类、档案、库和资源。库是存储在档案或目录中的一组类文件。

导出检查意味着如果检查,那么这个库将被隐式添加到引用这个库的另一个模块中。

要创建 .jar 文件,您需要创建一个工件。 Artifact 是建筑输出的占位符。有用于创建 .jar.war.ear 档案的预定义模板。您可以选择 jar 来构建 jar 工件。默认情况下,它定义为空,您需要定义工件的内容。您可以将已编译的输出拖放到其中,但不要使用库存档。因为在这种情况下,库将被打包在 .jar 文件中,并且您将需要创建一个单独的类加载器来在应用程序启动之前加载它们。相反,您将工件类型更改为 Other 并将 .jar 和相关库拖到 输出根 中。这样库档案将与创建的 .jar 一起复制。您还需要创建一个 MANIFEST.MF 并在那里为依赖库指定 Class-Path。所有文件都将存储在您为构建工件指定的目录中。您可以使用 Build Artifact 菜单来构建它。

【讨论】:

这篇文章对我帮助很大,但你需要更新它。 IntelliJ 今天有一个选项可以自动复制所有 jar 文件并将您的 Manifest 链接到 Class-Path 中的 jar 文件。为此:在创建工件时选择 JAR 而不是其他,然后在“库中的 JAR 文件”中选择“复制到输出目录并通过清单链接”【参考方案3】:

如果您的项目包含多个模块,“模块依赖关系”定义了这些模块之间的依赖关系,但库是您的模块使用的编译类(通常是 jar 文件,可选地包含它们的源代码和 javadocs)。

每个模块都可以有自己的库和工件(例如结果 jar 文件),并且可以依赖其他模块而没有循环依赖。

【讨论】:

【参考方案4】:

Module Dependencies 选项卡可以包含 LibrariesExport 表示模块中的库也可用于依赖于此的另一个模块模块。

可以使用 Artifacts 创建包含所有依赖项的最终 jar。

【讨论】:

以上是关于IntelliJ IDEA 中的“模块依赖”和“库”有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

IDEA库(Libraries)和模块依赖(Dependencies)详解

IDEA插件开发(12)---Dependencies

IntelliJ IDEA:“Indexed Maven Repositories”列表 - 如何删除此列表中的远程 maven 存储库?

intellij IDEA 中每个模块的不同存储库

在 IntelliJ IDEA 中将外部库添加到工件 jar

IDEA插件开发(14)---IntelliJ 平台工件存储库