WAR中的资源加载顺序

时间:2015-11-19 11:26:37

标签: java maven war

我有一个Java webapp(WAR),它有几个依赖项。其中两个包含在战争中暴露的资源(具有相同的名称)。

所以我的依赖树看起来像

dependency tree

我的问题是,如果我访问index.html,则使用来自core.jar依赖项的custom.css

有没有办法强制使用custom.css?我无法修改core.jar

谢谢, 迈克尔

环境:Maven 3,Java 1.8,Tomcat 8

3 个答案:

答案 0 :(得分:0)

您可以将必要的资源提取并放入myWAR本身。

答案 1 :(得分:0)

只要它由类加载器加载(很可能在你的情况下),你就可以保证不能强行订购。

您可以解压缩core.jar依赖项并排除custom.css文件,例如Building a WAR project with unzipped JAR dependency?中指定的

在这种情况下,您会在core.jar中排除maven-war-plugin依赖关系(请参阅https://maven.apache.org/plugins/maven-war-plugin/examples/including-excluding-files-from-war.html)并配置maven-dependency-plugin以将core.jar解包为target/classes同时排除META-INF/resources/custom.css

答案 2 :(得分:0)

WEB-INF/lib无法保证JAR文件的相对排序,但 保证WEB-INF/classes将优先于WEB-INF/lib/*.jar custom.css 1}}类路径中的文件。因此,如果您可以在最终的WAR文件中获得正确的WEB-INF/classes/META-INF/resourcesClassLoader.getResource,那么{{1}}将优先使用lib JAR中的{。}}。