我是 Visual Studio 的 IntelliJ 的新手,我通常对资源文件在 IntelliJ 项目中的工作方式感到很困惑。我阅读了一些关于将资源放入类路径以及 IntelliJ 文档的问题和答案,但仍然感到困惑。我还有几个问题:
- 有些问题提到了 maven,有些则没有。 Maven 项目在编译事物和处理资源的方式上与普通模块有何不同?
- 当我从 IntelliJ 中运行
main
方法时,它从哪里运行?直接来自编译的.class
文件,还是来自生成的jar
?这两者在文件系统中的什么位置,有什么区别? - 如果我只是将一个
.xml
文件放在源代码树中的某个位置,那么当从 IntelliJ 中编译和运行时,IntelliJ 默认会如何处理它?如何更改它的放置位置? - 在 IntelliJ 中运行
main
函数时的类路径是什么? - 如何将任意文件包含在 jar 文件中或与它一起出现在编译输出中?
最佳答案
在Maven项目中,IDE遵循Maven规则处理资源,使命令行Maven构建和IDEA构建的结果一致。如果 Maven 将资源复制到类路径,IDEA 也会这样做。
从模块的类路径及其依赖项,通常使用
.class
文件。在非 Maven 项目中,资源根据
Settings
复制到输出 |编译器
|资源模式
。在 Maven 项目中,资源是根据pom.xml
资源规则处理的。resources
文件夹中的文件会自动复制。其他文件夹需要使用pom.xml
手动添加到资源中。您可以在运行控制台打印的命令行中查看类路径。
在 Maven 项目中使用
resources
文件夹。在非 Maven 项目中,该文件应位于源根目录下,其扩展名需要出现在Resource Patterns
配置中。
另请注意,如果您使用的是遗留编译(禁用External Build
),IDEA 将使用Resource Patterns
配置,即使在 Maven 项目和 IDEA 与 Maven 之间的输出中也是如此会不一样。这同样适用于 IDEA 11 及更早版本。
关于compilation - 对 Intellij 如何编译事物和处理资源感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17699754/