我了解到,要访问Web服务器(Apache)中的静态文件,静态文件必须位于WEB-INF之外。但是,带有gradle的Spring boot starter项目会将静态文件构建到WEB-INF中。没有搜索可以找到将在WEB-INF之外构建静态文件的设置。我不知道我有什么问题。我需要一些建议。
下面是为测试而创建的基本spring boot启动程序项目。
环境
spring boot 2.1.1,java 1.8
布局
src
└ main
└ java
└ ...
└ resources
└ static
└ templates
└ application.properties
└ test
build.gradle
buildscript {
ext {
springBootVersion = '2.1.1.RELEASE'
}
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
apply plugin: 'java'
apply plugin: 'eclipse-wtp'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'war'
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
configurations {
providedRuntime
}
dependencies {
implementation('org.springframework.boot:spring-boot-starter-web')
implementation('org.springframework.session:spring-session-core')
compileOnly('org.projectlombok:lombok')
providedRuntime('org.springframework.boot:spring-boot-starter-tomcat')
testImplementation('org.springframework.boot:spring-boot-starter-test')
}
AS-IS战争结构
└META-INF
└org
└WEB-INF
└classes
└com
└static
└templates
└application.properties
└lib
└lib-provided
TO-BE战争结构
└META-INF
└org
└resources
└static
└templates
└WEB-INF
└classes
└com
└application.properties
└lib
└lib-provided
谢谢。
答案 0 :(得分:0)
在War Plugin - default settings处查看war
Gradle插件文档:
War任务的默认行为是将src / main / webapp的内容复制到存档的根目录。您的webapp目录当然可以包含一个WEB-INF子目录,该子目录可能包含一个web.xml文件。您编译的类将被编译为WEB-INF / classs。运行时1配置的所有依赖项都已复制到WEB-INF / lib。
如果将资源文件夹static
和templates
移到src/main/webapp
,则应该在War归档中获得预期的结构。