繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM