当前位置: 首页 > 知识库问答 >
问题:

为什么在Spring-Boot中提供来自maven依赖项的静态内容?

漆雕嘉茂
2023-03-14
jar -tf frontend.jar | sort
---------------------------
META-INF/
META-INF/MANIFEST.MF
META-INF/maven/
META-INF/maven/sample-project/
META-INF/maven/sample-project/frontend/
META-INF/maven/sample-project/frontend/pom.properties
META-INF/maven/sample-project/frontend/pom.xml
static/
static/3rdpartylicenses.txt
static/assets/
static/assets/img/
static/assets/img/loading.gif
static/favicon.png
static/index.html
static/main.8e44da4898d2a7a95ed3.js
static/polyfills.d72edd4c76dc8f27444a.js
static/runtime.a66f828dca56eeb90e02.js
static/styles.0afb74a990d73ad0b544.css
<dependency>
    <groupId>sample-project</groupId>
    <artifactId>frontend</artifactId>
    <version>${version}</version>
</dependency>

最后,当我启动spring boot web application时,我发现,当我转到localhost:port/url时,我得到了我的angular应用程序。

接下来的问题是:spring-boot如何理解它应该从前端依赖项服务静态内容?注意,我在spring-boot模块资源中没有静态文件夹。

共有1个答案

曾嘉荣
2023-03-14

在Java中,“JAR”只是组织应用程序进行部署的一种方式。不能基于类或资源在磁盘上的实际JAR或位置来寻址(除非您正在编写自己的classloader)。这样的物理细节在运行时不可用。从运行时的角度来看,一切都是扁平化的,有点像docker层。

因此,实际上并不存在“哪个类来自哪个依赖项”的概念。这有时会导致细微的错误,但也是jarjar、OSGi和新的Java9模块等技术存在的原因。

Spring Boot通常为/static下的类路径提供所有可用的功能。不存在资源来自“哪个jar”或“哪个目录”的概念。

 类似资料:
  • Spring boot不提供放置在jar中的静态文件。 我有一个后端应用程序,我决定添加前端。设置任务以将静态前端文件复制到 。在SO上经历了一堆答案,他们都建议静态内容(索引.html,.js和.css文件)应该驻留在或下,我都尝试过。我打开构建的.jar,静态文件在那里,但是使用启动应用程序.jar并打开给了我默认的白标错误页面。我的应用程序工作,因为我可以访问我在其上运行的API。应用程序没

  • 问题内容: 我无法让Spring-boot项目提供静态内容。 我已经放在一个命名的文件夹下。在其中,我有一个名为的文件夹。当我打包应用程序并运行它时,它找不到我放在该文件夹中的图像。 我试图把静态文件中,并但没有任何工程。 如果我我可以看到文件在正确文件夹的jar中:例如,但是调用:http://localhost:8080/images/head.png,我得到的只是一个404 有什么想法为什么

  • 我的情况: 我有两个独立的项目A和B。 没有项目A。 A和B使用相同的库: < li >反射-0.9.9-RC1.jar < li >番石榴-11.0.2.jar < Li > XML-API-1.0 . B2 . jar < li>javassist-3.16.1-GA.jar < li>dom4j-1.6.1.jar < li>jsr305-1.3.9.jar 我制作了项目C,这是项目a的插件

  • 今天无法用maven下载spring-boot-starter-parent-2.4.0-M1 jar(2022年7月6日) 这是404。https://repo.spring.io/milestone/org/springframework/boot/spring-boot-starter-parent/2.4.0-M1/spring-boot-starter-parent-2.4.0-M1.p

  • 我正在通过spring boot启动一个嵌入式tomcat,并希望提供一个静态索引。html页面作为正在运行的应用程序的一部分。 但以下方法不起作用: 结果:当我调用localhost:8080时,我只看到单词“index”,而没有看到我的html页面。为什么?

  • 我想建立jar文件库,而不包括依赖项,因为它们将在应用程序的类路径,将使用这个库。我使用了为此提供的maven作用域,并且排除了所有依赖项,但仍然保留了很少的依赖项。我发现它们来自Spring-Boot-Starter-WebFlux。为什么是这个?我该怎么做才能摆脱他们呢? 这里的依赖关系示例 只有这一个依赖项的示例项目位于https://github.com/pavelmorozov/mave