[英]WAR File contains static resources twice after Gradle WAR build
过去,Web应用程序的静态资源始终位于src/main/webapp
。
最近, Spring Initializr
为我创建了一个新的项目布局,因此发现资源应位于src/main/resources/static
。 我认为这是新标准。
由于此更改,这些项目现在也可以立即在IntelliJ下运行,对于Eclipse,我在build.gradle
文件中进行了这种修改:
project.webAppDirName = 'src/main/resources/static'
eclipse {
wtp {
component {
contextPath = '/'
deployName = 'myapp'
}
facet {
//facet name: 'jst.web', version: '3.1'
file {
whenMerged {
facets.each { f ->
if (f.name == 'jst.web') {
f.version = '3.1'
}
}
}
}
}
}
}
现在,我今天已经构建了一个WAR,必须意识到静态资源是其中的两倍。
发生某种魔术(自动)。
有一些东西将我的静态资源复制到WAR的根目录中,就像它们在webapp
下一样。 在WEB-INF/classes/static
下也可以找到相同的资源
我假设静态资源在WAR根目录中的正确位置。 在Gradle
中避免WEB-INF/classes/static
下的资源的正确方法是什么?
默认情况下,来自src/main/resources
的内容被复制到WEB-INF/classes
。 设置project.webAppDirName会创建一个附加的sourceSet
,将其复制到war
文件(的根文件夹) war
。
要从默认复制操作中排除某些文件,可以像这样从sourceSet
排除文件:
war {
rootSpec.exclude('**/static/**')
}
在此处记录:
如何从最终的WAR中排除src / main / resources文件?
在Gradle War中如何排除目录及其内容
针对默认位置或webAppDirName位置使用WAR插件时,如何从WAR中排除文件
使用Gradle将错误的文件添加到WAR包中
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.