我的春季启动项目是这样的:
project
|__ build.gradle
|__ settings.gradle
|__ application
|__ library
|__ web
|__ application
|__ library
|__ web
应用程序包含main和一个实现WebMvcConfigurer的MvcConfig类:
@Configuration
public class MvcConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers (ResourceHandlerRegistry registry) {
String workingDirectory = System.getProperty("user.dir");
registry.addResourceHandler("/**")
.addResourceLocations("file:///" + workingDirectory + "/../web/dist/");
}
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("forward:/index.html");
}
}
当我跑步时:gradlew:application:bootRun =>一切正常。
我的网络目录是一个angularJS应用程序,gulp在dist目录中构建它。 (我使用moowork节点和gulp gradle插件)
但是现在我想把我的所有应用程序放在用bootJar生成的一个胖jar中。
java -jar application.jar (will run all the app)
application.jar包含web.jar,其中包含dist库中的所有内容。
gradlew:应用程序:bootJar生成一个包含所有内容的jar(库,spring-boot web),但是当我启动它时,它找不到我的index.html
我知道我必须更改addResourceLocations参数,但我需要一些帮助来完成它。 我试过(没有成功):
.addResourceLocations("classpath:/web/");