Spring Boot 类路径

新手上路,请多包涵

此处的 Spring Boot 文档 中,关于提供静态内容,它说:

默认情况下,Spring Boot 将从 类路径 中名为 /static(或 /public 或 /resources 或 /META-INF/resources)的目录中提供静态内容。

我发现目录中的所有内容:

 src/main/resources

将被复制到 classpath 中,所以我可以将我的静态内容放在:

 src/main/resources/static

一切都会正常工作,我很高兴,因为我可以在 src 目录下拥有我的静态内容。

但是,我对此有一些疑问:

  1. 为什么文档没有说将静态内容放入 src/main/resources/static 而不是谈论类路径(我认为这有点令人困惑)?
  2. 假设 src/main/resources/ 中的内容将始终复制到类路径中是否很好?
  3. 是否有一些 Spring Boot 官方文档解释了除了 Java 类和包之外我应该在类路径中找到的内容(到目前为止我只知道我可以从 src/main/resources/ 找到所有内容)?

原文由 Andrea 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 545
2 个回答

/src/main/resourcesMaven 项目结构约定。这是您放置资源的项目内部路径。在构建步骤中,Maven 将在那里获取文件并将它们放置在适当的位置,以便您在运行时类路径中使用它们,例如在可执行文件中 .jar ,类路径中使用的一些物理文件系统位置(与 java-cp 选项)等

我可以选择自己构建我的应用程序或使用不同的构建工具。在这种情况下, /src/main/resources 将不存在。但是,目的是让类路径相同,即。包含相同的资源和 .class 文件。

Spring boot 文档讨论了类路径,因为它不应该对项目的设置方式做出假设。

原文由 Sotirios Delimanolis 发布,翻译遵循 CC BY-SA 3.0 许可协议

类路径还包含其他库 (JAR),它们也可以有一个 static 文件夹,然后将包含该文件夹以提供静态资源。因此,如果文档仅说明文件夹 src/main/resources/static ,它将是不完整的。

广告 2:只要您不弄乱默认的 Maven 配置,就可以安全地假设这一点。

广告 3:也许从官方 Oracle 文档开始: https ://docs.oracle.com/javase/8/docs/technotes/tools/windows/classpath.html。提示:当然,它不仅是类路径中的资源文件夹的内容,而且当然还有所有已编译的类,因此得名。

原文由 dunni 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题