gpt4 book ai didi

java - Gradle WAR 构建后,WAR 文件两次包含静态资源

转载 作者:太空宇宙 更新时间:2023-11-04 10:32:12 26 4
gpt4 key购买 nike

过去,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,该sourceSet将被复制到war文件(的根文件夹)。

要从默认复制操作中排除某些文件,您可以从 sourceSet 中排除文件,如下所示:

war {
rootSpec.exclude('**/static/**')
}

这记录在此处:

How to exclude src/main/resources files from the final WAR?
How to Exclude directory and its contents in gradle war
How can I exlude files from WAR when using WAR plugin against default or webAppDirName location
Wrong files added to WAR package using Gradle

关于java - Gradle WAR 构建后,WAR 文件两次包含静态资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49879533/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com