2

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

  1. 有些问题提到了maven,有些没有。maven 项目在编译和处理资源方面与普通模块有何不同?
  2. 当我main从 IntelliJ 中运行一个方法时,它是从哪里运行的?直接从编译的.class文件,或从生成的jar?这两者都存在于文件系统中的什么地方,有什么区别?
  3. 如果我只是将一个.xml文件放在源代码树的某个位置,那么在 IntelliJ 中编译和运行时,默认情况下 IntelliJ 会如何处理它?我怎样才能改变它的位置?
  4. main在 IntelliJ 中运行函数时的类路径是什么?
  5. 您如何获得包含在 jar 文件中或编译输出中的任意文件?
4

1 回答 1

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

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

  3. 在非 Maven 项目中资源被复制到输出根据Settings| Compiler| Resource Patterns. 在 Maven 项目中,资源是根据pom.xml资源规则处理的。文件resources夹中的文件会自动复制。其他文件夹需要手动添加到资源中pom.xml

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

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

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

于 2013-07-17T12:38:27.657 回答