【发布时间】:2017-02-18 04:22:21
【问题描述】:
我有一个新的 angular2 项目,它是使用快速入门中描述的标准文件结构构建的。我正在尝试构建一个 API 网关并让 spring-boot 托管我的应用程序,但是我无法将 boot 配置为使用创建生成源的项目中的 /dist 目录。项目结构如下:
project
|--dist
|--node_modules
|--src
| |--app
| |--assets
| |--main
| | |--java
| | |--resources
| | | |--config
| | |--webapp
| | | |--WEB-INF
我想使用默认的 /dist 目录,这样我仍然可以使用 npm/webpack 在 UI 上进行持续开发。
我尝试像这样配置静态资源目录:
spring.resources.staticLocations: /dist
但这似乎不起作用。
我创建了一个资源处理程序来直接指向 dist 目录:
@Configuration
public class WebMvcConfiguration extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(final ResourceHandlerRegistry registry) {
String currentPath = new File("./").getAbsolutePath();
currentPath = "file:///" + currentPath;
registry.addResourceHandler("/**").addResourceLocations(currentPath + "/dist/");
}
}
这解决了部分问题,但现在我的根 URL ('/') 不再映射到 index.html。
是否有更简单/更好的方式来配置 spring-boot 以查找 /dist 项目目录?我的项目结构应该改变吗?我真的很想让所有这些部分干净利落地一起工作。
【问题讨论】:
-
您需要使用类路径中的位置,而不是尝试直接在磁盘上点击它。 (毕竟它不会在 jar 中!)我通常将我的 JS 管道配置为输出到
target/classes。
标签: javascript java spring angular spring-boot