我有一个Java webapp(WAR),它有几个依赖项。其中两个包含在战争中暴露的资源(具有相同的名称)。
所以我的依赖树看起来像
我的问题是,如果我访问index.html,则使用来自core.jar依赖项的custom.css
有没有办法强制使用custom.css?我无法修改core.jar
谢谢, 迈克尔
环境:Maven 3,Java 1.8,Tomcat 8
答案 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/resources
到ClassLoader.getResource
,那么{{1}}将优先使用lib JAR中的{。}}。