对Intellij如何编译和处理资源感到困惑

时间:2013-07-17 12:26:41

标签: compilation resources intellij-idea

我是视觉工作室的IntelliJ新手,我对IntelliJ项目中资源文件的工作原理感到困惑。我读了几个问题&有关将资源放入类路径以及IntelliJ文档的答案,但我仍然感到困惑。我还有一些问题:

  1. 有些问题提到了maven,有些则没有。 maven项目如何在编译和处理资源方面与正常模块不同?
  2. 当我从IntelliJ中运行main方法时,它从哪里运行?直接来自已编译的.class文件,还是来自生成的jar?文件系统中哪些都存在,哪些区别?
  3. 如果我只是在源代码树的某处放置一个.xml文件,那么IntelliJ在IntelliJ中编译和运行时默认使用它做什么?我怎样才能改变它的位置?
  4. 在IntelliJ中运行main函数时的类路径是什么?
  5. 如何在编译输出中将jar文件包含在jar文件中或与其并列?

1 个答案:

答案 0 :(得分: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配置中。

  6. 另请注意,如果您使用遗留编译(External Build已禁用),IDEA将在Maven项目中使用Resource Patterns配置,并且IDEA和Maven之间的输出将不同。这同样适用于IDEA 11和旧版本。