compilation - 对 Intellij 如何编译事物和处理资源感到困惑

标签 compilation resources intellij-idea

我是 Visual Studio 的 IntelliJ 的新手,我通常对资源文件在 IntelliJ 项目中的工作方式感到很困惑。我阅读了一些关于将资源放入类路径以及 IntelliJ 文档的问题和答案,但仍然感到困惑。我还有几个问题:

  1. 有些问题提到了 maven,有些则没有。 Maven 项目在编译事物和处理资源的方式上与普通模块有何不同?
  2. 当我从 IntelliJ 中运行 main 方法时,它从哪里运行?直接来自编译的.class 文件,还是来自生成的jar?这两者在文件系统中的什么位置,有什么区别?
  3. 如果我只是将一个 .xml 文件放在源代码树中的某个位置,那么当从 IntelliJ 中编译和运行时,IntelliJ 默认会如何处理它?如何更改它的放置位置?
  4. 在 IntelliJ 中运行 main 函数时的类路径是什么?
  5. 如何将任意文件包含在 jar 文件中或与它一起出现在编译输出中?

最佳答案

  1. 在Maven项目中,IDE遵循Maven规则处理资源,使命令行Maven构建和IDEA构建的结果一致。如果 Maven 将资源复制到类路径,IDEA 也会这样做。

  2. 从模块的类路径及其依赖项,通常使用 .class 文件。

  3. 在非 Maven 项目中,资源根据 Settings 复制到输出 | 编译器 | 资源模式。在 Maven 项目中,资源是根据 pom.xml 资源规则处理的。 resources 文件夹中的文件会自动复制。其他文件夹需要使用pom.xml手动添加到资源中。

  4. 您可以在运行控制台打印的命令行中查看类路径。

  5. 在 Maven 项目中使用 resources 文件夹。在非 Maven 项目中,该文件应位于源根目录下,其扩展名需要出现在 Resource Patterns 配置中。

另请注意,如果您使用的是遗留编译(禁用External Build),IDEA 将使用Resource Patterns 配置,即使在 Maven 项目和 IDEA 与 Maven 之间的输出中也是如此会不一样。这同样适用于 IDEA 11 及更早版本。

关于compilation - 对 Intellij 如何编译事物和处理资源感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17699754/

相关文章:

java - 我的资源文件夹应该在哪里有一个可运行的 jar?

java - IntelliJ Idea GUI 表单 : Null Layout

maven - 使用 IntelliJ 12.1.2 和 Maven 项目时 Grails 应用程序不同步

c++ - 如何在 Cygwin 中将 speech.h 添加到 g++?

Java - 将.class文件编译为可读文件

linux - 尝试使用 gcc 在 linux 上编译模块

c# - 如何在资源文件中查找?

iphone - 如何在 iPhone 中编译 Eigen

java - getResources() 返回仅包含 1 个对象的枚举

java - 在 IntelliJ 中导入之前组织静态导入