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

the*_*oop 2 resources compilation intellij-idea

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

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

Cra*_*der 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禁用),IDEA将Resource Patterns在Maven项目中使用配置,并且IDEA和Maven之间的输出将不同.这同样适用于IDEA 11和旧版本.